ST. LOUIS -- Carlos Zambrano decided to try a different approach after he struggled during his pregame bullpen session Wednesday night.
Since he was pitching in St. Louis, of course it worked out just fine.
Zambrano tossed six innings of two-run ball, Tyler Colvin hit a three-run homer and the Chicago Cubs beat Chris Carpenter and the sliding Cardinals 7-3 to complete their first three-game sweep in St. Louis in more than 20 years.
Zambrano (9-6) allowed an earned run and four hits, improving to 6-0 with a 1.37 ERA in his past seven starts. He is 7-1 with a 1.29 ERA in 12 career starts in St. Louis, including 6-0 in seven outings at the new Busch Stadium.
"When I come here, for some reason I feel good," Zambrano said. "I said before the game, any time you face [Adam] Wainright or Carpenter, you got to come with your 'A' game. Those guys are not easy matchups. They're two of the best in the league, and you got to come dealing, too."
Zambrano was struggling to get his fastball up to 90 mph before the game, so he decided to improvise. He told pitching coach Larry Rothschild he planned to use his breaking stuff more.
"When you see the gun and your fastball is only 88 or 89 you have to pitch with your other pitches," Zambrano said.
It was the Cubs' first three-game series sweep in St. Louis since June 10-12, 1988. Chicago also has won five consecutive games at the Cardinals for the first time since June 18-Aug. 14, 1983.
"I'm thrilled to win games," interim manager Mike Quade said. "To come in here and play like this against a club that's fighting like a son of a gun to get the division makes it even better."
Colvin connected against Carpenter (15-7) in the Cubs' four-run seventh inning, becoming the fourth Chicago rookie to hit 20 home runs in a season. Teammate Geovany Soto was the last to accomplish the feat, hitting 23 in 2008.
Carpenter pitched 6 1/3 innings before leaving with a right hamstring cramp. He was charged with five runs and seven hits.
"I felt like I threw the ball well," Carpenter said. "Colvin hit a good pitch. That's what was kind of weird. I was fine the whole game."
Not even the return of Albert Pujols could help the Cardinals, who fell eight games behind Cincinnati in the NL Central with 18 games left on their schedule. Pujols missed Tuesday's game with inflammation in his left elbow, but he started Wednesday and went 0 for 2 with two walks and was hit by a pitch.
"We're struggling," St. Louis manager Tony La Russa said. "The scores weren't really close; that's troubling. We're all troubled."
The Cardinals loaded the bases with one out in the ninth but Carlos Marmol struck out Matt Holliday and Colby Rasmus to record his 31st save in 36 chances. He now has 122 strikeouts, tops among all major-league relievers.
Holliday, Rasmus and Molina each drove in a run for St. Louis.
Something seemed to be bothering Carpenter when the Cubs rallied in the seventh. Ramirez led off with a double to right and went to third on Xavier Nady's infield single to third. After Alfonso Soriano struck out, Colvin hit a 3-2 off-speed pitch into the right-field stands to make it 4-2.
Colvin said Carpenter left the pitch up just enough for him to hit it out.
"He didn't put it down in the dirt and I was able to get it pretty good," Colvin said.
- Due to concerns about his workload, the Cardinals decided to have Jaime Garcia skip his next scheduled start Saturday. Garcia, who is coming off Tommy John surgery, is 13-8 with a 2.70 ERA in 163 1/3 innings but has lost his last two decisions.
- Zambrano has won five consecutive starts for first time since he won six straight from July 2-30, 2006.
- The home run was the 20th allowed by Carpenter; he allowed only seven all last season.