MILWAUKEE (AP) - Casey McGehee homered three times and the Milwaukee Brewers rallied to beat the St. Louis Cardinals 10-5 on Wednesday and add to their NL Central lead.
McGehee hit go-ahead, two-run homers in both the first and third innings and added a seventh-inning solo shot to give Milwaukee its eighth win in nine games at Miller Park. Corey Hart also homered for the Brewers, who extended their lead over the Cardinals to 3 1/2 games.
Rafael Furcal hit a three-run homer and drove in four runs off Randy Wolf (8-8) in his fourth game since being acquired Sunday in a trade with the Dodgers, but new Cardinals starter Edwin Jackson struggled.
Jackson (1-1) made his second start with St. Louis since being acquired in a three-team trade. He gave up 10 runs - eight earned - and allowed 14 hits over seven innings of extended work because of St. Louis' worn-down bullpen following an 11-inning win on Tuesday.
Phillies 8, Rockies 6
DENVER (AP) - Roy Halladay fought through an erratic outing for his NL-leading 14th win, and Ryan Howard drove in four runs with a homer and a double as Philadelphia completed the sweep.
Halladay (14-4) allowed five runs on eight hits in seven innings. He struck out seven and walked one as the NL East-leading Phillies won their sixth straight.
Brad Lidge got three outs for his first save of the season after being reinstated from the disabled list late last month.
Jason Hammel (6-11) gave up six runs on eight hits in five innings in taking the loss, the Rockies' fourth straight.
Giants 8, Diamondbacks 1
SAN FRANCISCO (AP) - Ryan Vogelsong won his career-best sixth straight decision, and Orlando Cabrera drove in three runs to help San Francisco remain atop the NL West.
Vogelsong (9-1) allowed one run on five hits, struck out seven and walked three in six innings as the Giants snapped a five-game losing streak in which they were outscored 31-8.
Carlos Beltran tripled among his three hits, scored twice and drove in a run in his best game since joining the Giants in a trade from the New York Mets last Thursday.
Jason Marquis (8-6) went four innings, allowing eight runs - seven earned - on 10 hits with one walk and one strikeout.
Braves 6, Nationals 4
WASHINGTON (AP) - Dan Uggla hit a three-run homer and extended his career-best hitting streak to 25 games, and Freddie Freeman had two hits and two RBIs as Atlanta avoid a sweep.
Uggla's streak is Atlanta's longest since Marquis Grissom put together a 28-game run in 1996, while Freeman's 18-game run is the longest by a rookie in the majors this season.
Braves rookie Brandon Beachy (5-2) took a four-hit shutout into the sixth but failed to get another out.
Chien-Ming Wang (0-2) allowed six runs and seven hits in five innings and Jayson Werth homered for the Nationals, whose four-game winning streak ended.
Cubs 1, Pirates 0
PITTSBURGH (AP) - Starlin Castro homered and Matt Garza pitched seven shutout innings to lead the Chicago Cubs over the sliding Pittsburgh Pirates.
Castro's solo homer leading off the eighth inning made a winner of Garza (5-8). The right-hander combined on a four-hitter with Sean Marshall and Carlos Marmol, who worked the ninth for his 22nd save.
Castro hit a full-count pitch over the left-field fence off Chris Resop (3-3) for his fourth home run of the season to give the Cubs their first four-game winning streak of 2011. The shortstop went 3 for 4 and is 9 for 14 in the first three games of the four-game series.
Garza was lifted after walking pinch-hitter Matt Diaz to start the eighth. He allowed four hits, walked two and struck out seven for his first win in seven starts.
Pittsburgh starter Charlie Morton pitched seven scoreless innings, allowing five hits.
Astros 5, Reds 4
HOUSTON (AP) - Rookie J.D. Martinez homered and hit a go-ahead two-run double in the seventh inning to help rookie starter Jordan Lyles pick up his first career win as the Houston Astros beat the Cincinnati Reds.
Martinez hit a two-run homer in the first inning and drove in two more with a bases-loaded double off reliever Nick Masset (1-5) to put Houston ahead 4-3.
Lyles (1-6) allowed six hits and three runs in seven innings to pick up his first win in his 12th start. Fernando Rodriguez pitched a perfect eighth before Mark Melancon allowed one run in the ninth for his 11th save.
Masset's tough outing ruined a good night by Reds starter Dontrelle Willis, who yielded eight hits and two runs and also put Cincinnati ahead in the seventh with a solo home run. The shot, which landed several rows up in the stands in right field, was his first home run since Aug. 29, 2007.
Padres 3, Dodgers 0
SAN DIEGO (AP) - Tim Stauffer shut down the Dodgers for 6 1-3 innings, Jason Bartlett homered and the San Diego Padres averted a three-game sweep.
Bartlett, who had three hits, broke a scoreless tie with a leadoff home run in the sixth against Ted Lilly (7-11). The Padres stopped their five-game losing streak against Los Angeles.
Stauffer (7-8) gave up six hits, walked one and struck out two.
Heath Bell, the subject of trade rumors prior to the July 31 deadline, posted his first save since San Diego opted not to deal the closer, who is in the last year of his contract. The save was Bell's 31st in 33 opportunities.