The pitcher and catcher combined for five of St. Louis' eight hits.
"The bottom of the order, they really hurt us today," Cubs manager Dusty Baker said.
Carpenter held the Cubs to two hits, struck out five and walked one. He threw 100 pitches, and took the mound to start the ninth. But after throwing a few warmups, the Cardinals ace consulted with trainer Barry Weinberg and manager Tony La Russa and left.
Carpenter said his toes, forearms and calves were cramping even though it was not an especially warm day with the gametime temperature at 78 degrees. He had troubles with dehydration earlier in the season, leaving a game with cramps in his fingers.
"I was trying as hard as I could to play it down and I went out there and everything -- my toes, my forearms and my calves -- were locking up," Carpenter said. "I wasn't going to go out there and hurt the team's chance to win."
Bennett has two straight three-hit games for the NL Central-leading Cardinals. St. Louis had entered the series in a slump that had dropped it into a virtual tie for first place with Cincinnati.
Bennett made his third straight start in place of catcher Yadier Molina, who's been hampered by tendinitis in his throwing elbow. He's likely to get at least a few more starts before Molina returns.
"It definitely doesn't hurt to see live pitching every day," Bennett said. "I'm not saying it's going to always translate into a bunch of hits, but you're going to have better at-bats, for sure."
Preston Wilson singled off Roberto Novoa (2-1) with one out in the ninth and stole second. After Ronnie Belliard fouled out, Bennett singled to left-center field and Wilson scored easily.
Randy Flores (1-1) allowed a hit in the ninth.
Carpenter held the Cubs without a hit until Phil Nevin's opposite-field single to right with two outs in the fifth. The Cubs didn't advance a runner past first base until Nevin's 12th homer tied it at 1 with one out in the eighth.
"I think I'm the only guy he made a bad pitch to," Nevin said. "In fact, I joked with him down at first base when he got there that he's never straightened one out like that for me."
Cubs reliever Bob Howry escaped a bases-loaded jam in the eighth that featured the second single of the game by Carpenter, a .132 hitter. Scott Rolen fouled out for the third out after Albert Pujols was intentionally walked.
Bennett hit his third homer, all coming in the last eight games, off Rich Hill with one out in the second.
Bennett has only 134 at-bats all season, fewest among players who have been with the Cardinals all season. He's 8-for-11 in his mini-stint as the regular, and all three of his homers have come in the last eight games.
Hill worked seven innings and gave up one run on four hits with two strikeouts and no walks, and was removed after warming up to start the eighth. He rebounded from a pair of difficult starts this month in which he allowed 11 runs in 10 2/3 innings.
"Now the confidence level is over with," Hill said. "Just going out there and getting the job done is the bottom line."
Cardinals rookie left fielder Chris Duncan, who misplayed three balls that ended up as doubles on Friday, made the best defensive play behind Carpenter. Duncan swerved to correct his bead on a drive to the gap before leaving his feet to snare Freddie Bynum's drive near the track in the first.
- The Cubs' Ronny Cedeno is in a 3-for-30 slump.
- The Cardinals are 12-15 when Pujols goes hitless, although they've won the first two games of the series without him. Pujols is a combined 0-for-7 thus far.
- Cardinals CF Jim Edmonds, who struck out four times with a walk on Friday in his first start since leaving an Aug. 15 game with blurred vision and dizziness, struck out as a pinch-hitter in the eighth.