Cubs 6, Cardinals 4: Luis Valbuena hit a two-run homer and Alfonso Soriano added a solo shot as host Chicago posted its sixth win in eight games.
Dave Sappelt and Starlin Castro each recorded two hits and an RBI for the Cubs, who have captured two of three in the four-game series.
The Cubs fell behind in the second inning as Tony Cruz got St. Louis on the board with an RBI single, but Soriano led off the bottom half with a double and scored on an error to forge a tie. Sappelt and Castro delivered run-scoring base hits later in the frame for a 3-1 Chicago lead and Soriano began the third with his 16th home run before Valbuena launched his shot an inning later to push the advantage to five runs.
Matt Garza (6-1) benefited from the offensive outburst, winning his fifth consecutive start after allowing two runs and 10 hits in 6 2/3 innings. Kevin Gregg yielded a run on a hit and two walks in the ninth before notching his 17th save.
Lance Lynn (11-4) was tagged for six runs - five earned - and 10 hits over 4 1/3 frames en route to his third loss in four outings. Jon Jay went 4-for-5 with an RBI for the Cardinals, who fell for just the second time in nine contests.
GAME NOTEBOOK: Cardinals C Cruz was called for catcher's interference in the second inning, marking the first time St. Louis committed the offense since 2006 - the longest active streak in the major leagues. ... The Cubs added an outfielder Saturday, claiming Cole Gillespie off waivers from San Francisco. The 29-year-old went 0-for-9 with a walk in three games with the Giants. ... St. Louis C Yadier Molina was held out of the starting lineup due to right knee inflammation but appeared as a pinch-hitter in the eighth, reaching on an error by Chicago RF Julio Borbon.