CHICAGO (AP) -- Carlos Beltran had three hits and drove in a run, while reliever-turned-starter Joe Kelly (1-3) won his first game of the season as the St. Louis Cardinals beat the Chicago Cubs 3-2 Friday at Wrigley Field.
Beltran was a homer short of hitting for the cycle, with a run-scoring triple, double and single as the Cardinals bounced back from Thursday night's loss to the Cubs that snapped a five-game winning streak.
Kelly allowed three hits and a run in 5 1-3 innings, striking out four and walking two. Edward Mujica pitched the ninth for his 26th save in 27 opportunities.
St. Louis jumped on Cubs starter Carlos Villaneuva (2-5) for two runs in the top of the first inning. Matt Carpenter singled and scored on Beltran's triple, followed by Allen Craig's RBI single.
The Cubs cut St. Louis' lead to 2-1 in the third. Luis Valbuena walked, went to second when Starlin Castro was hit by a pitch, Anthony Rizzo hit into a fielder's choice that pushed Valbuena to third and then Alfonso Soriano's single scored Valbuena.
The Cubs threatened in the sixth with runners at first and second with just one out, but Brian Bogusevic hit into an inning-ending double-play.
The Cardinals increased their lead to 3-1 in the seventh. Pinch-hitter Rob Johnson, batting for reliever Randy Choate, hit a two-out triple to right field, just out of reach of a diving Nate Schierholtz, and Matt Carpenter followed with an RBI double to left-center.
Castro closed the score to 3-2 with a lead-off homer in the eight, but the Cubs would get no closer, stranding seven runners in the game.
The Cubs are 12-8 in their last 20 games, and are 3-5 vs. St. Louis thus far this season. They faced the best team in baseball for the second straight week. Last weekend, they took two-of-three from the Pittsburgh Pirates, who had the major leagues' best mark at the time.
Cardinals LF Matt Holliday was held out Friday with right hamstring tightness and is day-to-day.