Bryan LaHair hit a grand slam and Ian Stewart added a three-run homer as Chicago dealt the defending-champion Cardinals a 9- 5 defeat in the opener of a three-game weekend set from Busch Stadium.
Starlin Castro finished 3-for-4 with an RBI and two runs scored for the Cubs, who have won two in a row since a three-game losing streak.
Jeff Samardzija (2-0) did just enough to pick up the win, allowing five runs and 10 hits with five strikeouts over five innings.
Matt Carpenter collected two hits and drove in two runs for St. Louis, which has lost two in a row. Yadier Molina, David Freese and Jon Jay added an RBI each in defeat.
Adam Wainwright (0-2) lasted just three innings, charged with seven hits and eight runs.