CHICAGO -- Carlos Zambrano's back began to tighten up again. This time he stayed around long enough to get the win.
"The third inning it started to bother me. I went as far as I could," Zambrano said.
Zambrano (9-5), who had to leave his previous start against the Mets after three innings with a stiff back, was visited on the mound by Dusty Baker and a trainer after he retired Abraham Nunez on a fly ball in the sixth.
That was it for Zambrano, who didn't return for the seventh against a team he has pitched well against all season. He's allowed St. Louis just two earned runs in 23 2/3 innings over three starts.
"He said he could go one more. But you could see he was laboring out there, throwing the ball high," Baker said.
"You hate to have a guy have back problems, then he starts changing his arm angle and compensating for it and you end up hurting something else. His teammates, they really convinced me he had had enough."
Michael Barrett had two doubles and then homered in the eighth for the Cubs, who had lost eight straight before beating the NL leading Cardinals twice. Chicago is still 17 games behind St. Louis in the division.
"Baseball is like that," Zambrano said.
"I don't know how to explain it," Barrett said. "There is a little extra adrenaline and it's fun to play in a rivalry like that."
Roberto Novoa pitched the seventh, Kerry Wood gave up a single and walk in the eighth, and Ryan Dempster allowed an RBI single to Skip Schumaker in the ninth. Right fielder Jeromy Burnitz slipped on the play, allowing the ball to drop in and Einar Diaz to score from second.
Nunez grounded out to end the game with two on and Pujols in the on-deck circle.
"Our hearts were beating at the end. If Albert comes up, who knows what," Cardinals manager Tony LaRussa said.
Jason Marquis (9-11), who has lost five straight starts and has just one win since June 10, gave up 10 hits and three runs in seven innings.
"It was one of the tougher games I had to pitch in a while," Marquis said of a humid 80-degree day at Wrigley Field. "The moisture, the temperature. I didn't realize how hot it was going to be. I had to work extra hard to make pitches."
He yielded a two-out, second-inning double to Barrett, who scored on Neifi Perez's single to right, beating So Taguchi's throw with a nice slide.
Barrett added a solo homer off Randy Flores in the eighth.
Marquis hit his seventh double of the season in the third to put runners at second and third, but the Cardinals couldn't convert. Mike Mahoney tried to score on a grounder by David Eckstein, but was tagged out in a rundown between home and third. Nunez then flied out to end the inning.
Chicago threatened in the home half, putting men at first and second, but Marquis got Lee to hit into a double play.
The Cubs had two on again with one out in the fifth when Walker hit a hard shot up the middle, but former Cubs second baseman Grudzielanek made a nice stop and started a 4-6-3 double play.
- Marquis went 2-for-3, giving him 23 hits for the season, two more than last year. He's now batting .359 this season.
- The Cubs are 5-2 this season against the Cards.
- Chicago SS Nomar Garciaparra didn't start so he could rest a sore groin but pinch-hit in the eighth and was drilled in the back by a pitch from Julian Tavarez. Tavarez was then removed from the game by LaRussa.
- Schumaker's hit and RBI were his first in the majors.