CHICAGO -- Carlos Beltran went 3-for-4 with an RBI and a run scored as the St. Louis Cardinals held on for a 3-2 victory over the Chicago Cubs on Friday afternoon.
The Cardinals jumped to an early lead and never trailed in the second of a four-game weekend series in front of an announced crowd of 37,322 at Wrigley Field.
Beltran, who went 0-for-4 in his 2,000th career game on Thursday, gave the Cardinals a 1-0 lead with a first-inning triple that scored Matt Carpenter, who had reached on a leadoff single. Beltran lined a Carlos Villanueva offering to the right field corner with one out.
Allen Craig made it 2-0 with a single up the middle, scoring Beltran.
St. Louis starter Joe Kelly (1-3) worked 5 2/3 innings for his first victory of the season after three starts and 21 relief appearances.
Villenueva (2-5) stumbled in his 11th start of the season and lost his fourth straight. He has not won since April 18 against Texas.
The Cubs cut the deficit in half in the third when Alfonso Soriano laced a two-out single to center, scoring Luis Valbuena.
Kelly worked 5 1/3 innings before he gave up a double to Anthony Rizzo in the sixth and was replaced by Randy Choate, who escaped the inning on Brian Bogusevic's double-play grounder to second.
Villanueva worked six innings, throwing 90 pitches and allowing two earned runs and four hits. He walked two and struck out four. It was his longest outing since going 8 1/3 innings in a April 23 no-decision at Cincinnati.
St. Louis added one run in the seventh against reliever Matt Guerrier, making his fifth Cubs appearance. Guerrier gave up a two-out triple to right to pinch-hitter Rob Johnson, who scored when Carpenter doubled to right.
Cubs reliever Pedro Strop faced runners on first and second in the eighth but worked out of the jam by striking out Matt Adams and David Freese.
Starlin Castro cut the deficit to 3-2 in the eighth with his sixth homer of the year -- a leadoff shot against Cardinals left hander Kevin Siegrist.
Edward Mujica, the Cardinals' sixth pitcher of the afternoon, had a 1-2-3 ninth for his 26th save of the season.
Game 3 is set for Saturday as the Cardinals send right-hander Lance Lynn (11-3) against Cubs right hander Matt Garza (5-1). The series concludes with a Sunday night game before the teams head into the All-Star break.
NOTES: The Cubs signed top draft pick Kris Bryant and the new third baseman took some swings during batting practice in his first official visit to Wrigley Field. The 21-year-old from the University of San Diego was the No. 2 overall pick in the 2013 draft. Terms were not disclosed. ... Thursday's 3-0 Cubs victory was only their second shutout win of the season and first since a 7-0 victory over the White Sox on May 27. ... Cardinals manager Mike Matheny, ejected after Thursday's 3-0 loss to the Cubs, said he objected to a called third strike on Adams to open the ninth inning, not a catch by Alfonso Soriano inches from the grass that ended the game. ... Cardinals catcher Yadier Molina entered Friday's game with a .440 batting average against the Cubs this season, including a home run and a team-high five RBI.