The Cardinals pulled within two games of wild card-leading Atlanta, which lost 4-1 to Washington. St. Louis plays the Cubs again Sunday, then closes with three games at Houston.
Jason Motte (5-2) got two outs for the win. Marmol (2-6) blew a save for the 10th time in 44 opportunities.
The Cubs bunched three of their six hits in the first, including Alfonso Soriano’s RBI single off Kyle Lohse .
Cardinals star Albert Pujols walked in the sixth and has reached safely in 40 consecutive games, breaking a tie with Johnny Damon for the longest in the majors this season.
In Washington, Chien-Ming Wang pitched six effective innings and drove in a run with his first career hit, leading Washington to the victory.
Atlanta lost for the 16th time in its last 26 games and is two games ahead of St. Louis for the NL wild card. The Braves play the Nationals again on Sunday, then close the season with three home games against Philadelphia.
Making his 11th start since returning from a two-year layoff following shoulder surgery, Wang (4-3) allowed one run and four hits, struck out four and walked none.
In New York, Hunter Pence dropped a deep fly ball for an error that led to five unearned runs, and the Mets completed a doubleheader sweep that handed the NL East champions their eighth straight defeat.
Having already secured home-field advantage throughout the postseason, the sluggish Phillies remained winless since clinching their fifth consecutive division title last Saturday.
In the afternoon opener, R.A. Dickey took a no-hit bid into the seventh inning and David Wright hit a tiebreaking double in the eighth for New York. Bobby Parnell (4-6) got the win and Manny Acosta recorded three outs to earn his third save.
Jimmy Rollins started both games for the Phillies. He had three hits in the nightcap, including a bunt and an RBI single.
In Pittsburgh, rookie Josh Harrison had four hits to lead the Pirates to the win.
Harrison set a career high for hits, finishing with two singles, a double and a triple against his hometown team. The third baseman was the Big East player of the year at the University of Cincinnati in 2008.
Cincinnati fell to 76-82 with four games remaining. The Reds won their first division title in 15 years last season.
Neil Walker added three hits for Pittsburgh. Brad Lincoln (2-3) went five innings for the win.
In Houston, Chris Nelson walked with the bases loaded in the 13th inning and the Rockies snapped a nine-game losing streak.
Pinch-hitter Tommy Field sparked the winning rally with a leadoff walk. Eric Young then reached on a bunt single against Jordan Lyles (2-8), with Field going on to third on an error by catcher Humberto Quintero .
Young moved up on defensive indifference, but Mark Ellis grounded out. Dexter Fowler was intentionally walked to set the stage for Nelson, who forced home the tiebreaking run. Pinch-hitter Wilin Rosario added a sacrifice fly in the 200,000th regular-season game in major league history.
In Milwaukee, pinch-hitter Corey Hart had a go-ahead, two-run double in the seventh inning, and Milwaukee rallied to beat Florida.
Ryan Braun finished 2 for 3 to raise his batting average to .331, just ahead of the Mets’ Jose Reyes (.330) for the NL lead. The Brewers have never had a batting champion.
John Axford converted his 45th save, a franchise record, and the NL Central champions came back from deficits of 1-0, 3-2 and 4-3.
Emilio Bonifacio and Omar Infante homered, but Florida guaranteed its first last-place finish in the NL East since 2007. The team will be renamed the Miami Marlins on Nov. 11 as it prepares to move into its new retractable-roof ballpark.
In Phoenix, Ian Kennedy pitched six innings to earn his NL-best 21st win and Arizona routed San Francisco, eliminating the defending World Series champions from the postseason picture.
Gerardo Parra had two hits and four RBIs for the Diamondbacks, who scored six times in the first and tied their single-highest scoring game of the season. Ryan Roberts drove in three runs.
Kennedy (21-4) allowed two runs and five hits, struck out four and walked two.
In San Diego, Matt Kemp’s pursuit of the Triple Crown took a hit when Aaron Harang threw eight sharp innings to lead San Diego over Los Angeles.
Kemp leads the NL with 119 RBIs and is tied for lead with 37 homers. But he went 1 for 4 to drop his batting average to .325, falling six points behind league leader Ryan Braun of Milwaukee at .331. New York’s Jose Reyes is second at .330.
With just four games remaining, Kemp is trying to become the majors’ first player to achieve the Triple Crown since Boston’s Carl Yastrzemski in 1967, and the first in the National League since Ducky Medwick of St. Louis in 1937.