Adam Wainwright gave up two hits in seven scoreless innings and Yadier Molina hit two homers as the St. Louis Cardinals completed a crucial three-game sweep of the Brewers with an 8-0 victory on Thursday.
It was the first career multihomer game for Molina, who came into Thursday's game with only one home run this season. He drove in all three of the Cardinals' runs through the first eight innings.
The third-place Cardinals closed to within two-and-a-half games of the lead in the NL Central for the first time since April 20.
Cubs 12, Reds 4
In Chicago, Mark DeRosa went 5-for-5 with four RBIs and Chicago scored seven times in the seventh to win for just the fifth time in the last 15 games.
Jacque Jones added four hits for the Cubs, who are only two games above .500 but moved within a half game of first-place Milwaukee in the NL Central.
Jason Marquis (10-7) allowed seven hits and four runs -- all of those coming in the second -- over six innings plus as Chicago salvaged one win in the three-game series.
Giants 9, Braves 3
At Atlanta, the Giants homered in each of the first four innings off Chuck James, scored in every inning until the eighth and went on to salvage the finale of a three-game series against Atlanta.
San Francisco jumped ahead quickly on Bengie Molina's three-run homer in the first. He batted cleanup in place of Barry Bonds, who got the night off after hitting his 759th homer on Wednesday.
Pirates 10, Mets 7
At Pittsburgh, two costly New York errors and Adam LaRoche's third hit of the game helped finish off Pittsburgh's comeback from a five-run deficit as the Pirates avoided being swept at home by the Mets for the first time since 2001.
Jason Bay had three run-scoring singles and LaRoche hit a two-run homer to lead the Pirates' rally from deficits of 5-0 and 7-3.
Phillies 4, Nationals 2
At Washington, Cole Hamels pitched six shutout innings for his 14th victory, tying the NL lead in wins as the Philadelphia Phillies beat Washington.
Hamels (14-5) allowed four hits, struck out six, walked two and pitched into the seventh inning for his sixth straight start. He has won five of his last six decisions.
Carlos Ruiz hit a two-run home run in the second, and Ryan Howard and pinch-hitter Greg Dobbs had RBIs for the Phillies.
Diamondbacks 5, Marlins 4
At Miami, Livan Hernandez shook off a rough start to pitch seven innings as Arizona edged Florida for its 19th win in 24 games.
Hernandez (9-7) gave up three runs in the first, then allowed only one run over the next six innings. The right-hander struck out none but walked only one and he also had two hits and scored a run.
Chris Young led off the first inning with a homer for the sixth time this season and tied the Arizona rookie record of 22 homers set by Travis Lee in 1998. Mark Reynolds hit his 10th homer for the Diamondbacks.
Dodgers 6, Astros 2
At Los Angeles, Derek Lowe pitched seven shutout innings to earn his first victory in almost two months and Los Angeles downed Houston.
Jeff Kent hit three doubles to match his career high and drove in two runs, and Rafael Furcal had two singles and two RBIs for the Dodgers, who won their second straight game after losing 18 of their previous 24 to fall a season-high six-and-a-half games behind division-leading Arizona.
Lowe (9-11) allowed five hits while walking none and striking out two. He was backed by a season-high four double plays.