Zach Duke stranded the bases loaded with a strikeout in the 10th inning after Randal Grichuk hit an RBI single in the top half of the inning, lifting the Cardinals over the Milwaukee Brewers 2-1 on Tuesday night.
St. Louis added a game to its lead in the wild card and is now 2 1/2 up on the Pittsburgh Pirates and New York Mets.
Seung Hwan Oh (4-2) pitched out of a jam in the ninth to get the win. Duke got his first save with the Cardinals by entering to strike out pinch-hitter Manny Pina after Matt Bowman walked three batters.
The Cardinals' Jhonny Peralta led off the 10th with a single off Corey Knebel (0-2) and moved to third on Yadier Molina's ground-rule double. Jeremy Hazelbaker, who pinch ran for Peralta, scored the winning run on Grichuk's flare to right.
Adam Wainwright dueled with Milwaukee's Wily Peralta for seven innings, and they left a 1-1 game for the bullpens to settle.
St. Louis' Jedd Gyorko broke the scoreless tie with a two-out home run in the sixth. The Cardinals have homered in 19 consecutive games, tying a franchise record set in July 2006.
Martin Maldonado's run-scoring double tied it in the bottom of the inning.
Luke Weaver (1-1, 3.60 ERA) will make his fourth major league start and first against the Brewers. He earned his first win in his last start against Oakland on Friday.
Matt Garza (4-6, 4.89) is 4-5 with a 4.25 ERA in 13 career starts against St. Louis. He surrendered seven runs in 5 2/3 innings in a loss at St. Louis on July 1.