ST. LOUIS -- Carlos Zambrano's NL-leading 13th victory was more of a struggle than usual.
"I feel good when I don't have my best stuff because that makes me pitch," Zambrano said. "That makes me use the corners and I don't hang anything."
Third baseman Scott Rolen's two-out fielding error on Ryan Theriot's routine grounder opened the door in the pivotal inning for the Cubs, who are an NL-best 20-7 since June 3. Entering a six-game road trip, Chicago had lost two straight but has not lost three in a row since a six-game skid from May 27-June 2.
"There's not much worse feeling in baseball than making an error and watching the run come in and score and putting you behind," Rolen said. "That ball was right there and I booted it."
The error helped spoil the start of a crucial seven-game homestand against the top two teams in the NL Central for the defending World Series champions, who fell to 45-51 and nine games back.
"We're in a spot where we can't afford to give any games away," Rolen said. "When you're playing the second-place and first-place teams in your division, we need to win these games and we don't need to be kicking balls around the field."
Zambrano (13-7) threw 117 pitches in 6 1/3 innings and the Cardinals ended his scoreless streak at 20 1/3 innings over three games on Skip Schumaker's two-run triple in the fifth. They couldn't keep Zambrano from passing Brad Penny for the NL victory lead.
"He made them put the ball in play more," manager Lou Piniella said. "I've seen him have better pure stuff, but he pitched tonight."
Zambrano, who struck out five and walked three, is 8-2 with a 1.56 ERA in 10 starts since June 2 and has allowed two or fewer runs in all but one of them. He's 2-0 against the Cardinals this year with a 2.03 ERA.
Pinch-hitter Ryan Ludwick hit a single to left that Alfonso Soriano bobbled, allowing a run to score before Ryan Dempster finished for his 17th save in 19 chances. Albert Pujols went 0-for-5 and grounded out to end it.
Derrek Lee had two hits and an RBI, driving in a run off Russ Springer in the ninth in his first game back after serving a five-game suspension for his role in a June 16 brawl with the San Diego Padres.
Jacque Jones and Ronny Cedeno also drove in runs for the Cubs. Cedeno, recalled from Triple-A Iowa earlier Tuesday, was batting only .034 when his single tied it at 2 in the sixth.
Kip Wells (4-13) made his second straight strong outing, allowing two earned runs on eight hits in 6 2/3 innings, but regained the major league lead in losses. The Cardinals moved Wells, who threw eight scoreless innings in his previous start, ahead of Mike Maroth in the rotation -- with Maroth scheduled to pitch Friday against the Brewers.
"For the most part, I felt like I threw the ball well and made a lot of good pitches, attacked the guys," Wells said. "I knew I had my work cut out for me with Zambrano."
Wells got Zambrano and Soriano on groundouts to start the seventh before Rolen, a seven-time Gold Glove third baseman, couldn't handle Theriot's slow roller. Lee walked before Ramirez singled to break the 2-2 tie.
Jones, 9-for-16 against the Cardinals this season with seven RBIs, put the Cubs ahead with a two-out single in the second.
The Cardinals appeared to benefit from a fan in the front row who battled Ramirez, the Cubs' third baseman, for a foul ball, in the fifth. Adam Kennedy singled later in his at-bat with Wells going to third, and Schumaker, who swung and missed at a pitch in his eyes to start his at-bat, followed with his two-run triple.
- Cubs 2B Mark DeRosa left after 2 1/2 innings because of tendinitis in his left hamstring. Piniella said DeRosa felt a twinge on the side of his knee, but a team spokesman said DeRosa believes it's a minor injury.
- Cedeno replaced him in the batting order, going to shortstop with Theriot moving to second base.
- The paid attendance of 45,436 was four fewer than the season best for the Cardinals, who have sold out every game since new Busch Stadium opened in 2006.
- The Cardinals are 21-23 at home after going 49-31 last year.
- Wells has lost four straight decisions to the Cubs over a five-start span and is 3-4 for his career against Chicago.
- Schumaker is batting .500 (18-for-36) in July.