Pinch hitter Reed Johnson drove in the go-ahead with a bunt single in the seventh inning and the Chicago Cubs got past St. Louis 3-2 Saturday, ending the Cardinals' four-game winning streak.
The Cubs had lost five in a row to St. Louis. Chicago has won nine of its last 11 overall at Wrigley Field.
Johnson caught the Cardinals by surprise when he squared up on the first pitch with runners on first and third and two outs. His bunt fell perfectly between reliever Brian Fuentes and third baseman Matt Carpenter, allowing pinch-runner Tony Campana to score.
James Russell (3-0) earned the win in relief.
Carlos Marmol pitched the ninth for his 13th save in 15 chances. He struck out Skip Schumaker and got John Jay on a groundout with pinch-runner Tyler Greene on second to end the game.
Bryan LaHair drew a leadoff walk in the seventh from rookie Joe Kelly (1-4). Campana entered the game and stole his 26th base in 29 tries, then went to third on Geovany Soto's single. Two outs later, Johnson bunted for a hit.
Kelly allowed three runs over a career-high 6 1-3 innings. He hasn't allowed more than three runs in any of his nine outings this season.
Both starters struggled early, then settled down — combining to strike out seven straight batters at one point.
Cubs starter Jeff Samardzija's first seven pitches eluded the strike zone and he walked the bases full on 16 pitches. He limited St. Louis to one run in the inning on an RBI grounder by Carlos Beltran.
Kelly allowed hits to three of the Cubs' first four batters. David DeJesus singled to start the game, followed by Starlin Castro's double. Both scored on Alfonso Soriano's two-run triple that bounced around the left-field corner and got away from Matt Holliday. It was Soriano's first triples since last Aug. 11.
Kelly set down the next 14 batters, including four straight strikeouts at one point. He struck out a career-best six.
Samardzija's control problems returned in the sixth, when St. Louis loaded the bases on a pair of walks and a broken-bat single by Yadier Molina. Daniel Descalso tied the score at 2 with a sacrifice fly to deep right.
Samardzija finished with seven strikeouts in six innings but walked six, the second-most in his career. He walked seven against the Cardinals on Sept. 26, 2010 at Wrigley Field.