Five runs in the eighth innings saw the Cardinals all but claim their third straight post-season berth with Washington National's game against Miami Marlins postponed due to bad weather.
If the Nats lose the rescheduled game, or if St Louis win their next, the Cardinals will reach the play-offs.
Pittsburgh Pirates pulled a game ahead of the Reds for the Wild Card lead and remained two behind the first-place Cardinals after they beat Cincinnati 4-2.
The Tampa Bay Rays followed up their 18-inning marathon with a 5-1 win over Baltimore Orioles to stay a half-game ahead of the Cleveland Indians for the first American League Wild Card berth.
Cleveland beat Houston Astros 4-1 to hang on to the AL's second Wild Card spot thanks in great part to Michael Brantley, who hit a two-run homer in a three-run first innings.
Elsewhere, the New York Yankees stayed alive in the American League Wild Card chase as Ivan Nova fired a six-hit shutout while Eduardo Nunez and Alfonso Soriano hit home runs as they beat San Francisco Giants 6-0.
Chicago Cubs beat Atlanta Braves 3-1 and Oakland Athletics thrashed Minnesota Twins 9-1 to cut their magic number to clinch their second straight AL West title to one.
New York Mets won a rain-shortened game against Philadelphia Phillies 5-4 while Texas kept pace with Tampa Bay and Cleveland in the AL Wild Card race with a 3-1 win over Kansas City Royals.
Chicago White Sox edged out Detroit Tigers 7-6 in the 12th inning and Toronto Blue Jays earned a 4-2 win over Boston Red Sox, with Mark Buehrle surpassing the 200-inning plateau for the 13th consecutive season.
Arizona Diamondbacks downed Colorado Rockies 7-2 while Los Angeles Dodgers won 4-0 at San Diego Padres.
Finally, Los Angeles Angels beat Seattle Mariners 6-5 at Angel Stadium.