Brewers 10, Cardinals 5: Casey McGehee homered three times, and host Milwaukee rallied to beat St. Louis and add to its NL Central lead.
"I don't think I've ever had three in a game ever. It's something I'll definitely remember," McGehee said. "It was kind of one of those out-of-body experiences."
McGehee hit go-ahead, two-run homers in the first and third innings and added a seventh-inning solo shot to give Milwaukee its eighth win in nine games at Miller Park. Kentucky native Corey Hart also homered for the Brewers, who extended their lead over the Cardinals to 3½ games.
Rafael Furcal hit a three-run homer and drove in four runs for the Cardinals.
Never miss a local story.
Braves 6, Nationals 4: Dan Uggla homered and extended his career-best hitting streak to 25 games, Freddie Freeman had two hits and two RBI, and visiting Atlanta avoided a three-game sweep. Uggla went 2-for-4, including a three-run drive in the fifth inning. His hitting streak is Atlanta's longest since Marquis Grissom put together a 28-game run in 1996.
Giants 8, Diamondbacks 1: Ryan Vogelsong (9-1) won his career-best sixth straight decision, Orlando Cabrera hit a two-run double and drove in three runs, and host San Francisco remained atop the NL West.
Phillies 8, Rockies 6: Roy Halladay (14-4) fought through an erratic outing for his NL-leading 14th victory, Ryan Howard drove in four runs with a homer and a double, and Philadelphia completed a sweep at Colorado. Halladay allowed five runs on eight hits in seven innings. Brad Lidge got three outs for his first save of the season after being reinstated from the disabled list last month.
Red Sox 4, Indians 3: Jacoby Ellsbury got the winning hit for the second night in a row, homering with two outs in the ninth inning to lift host Boston. Dustin Pedroia and Adrian Gonzalez each had two hits for the Red Sox, who won for the 10th time in 13 games.
Mariners 7, Athletics 4: Newly acquired Charlie Furbush (2-3) retired the first 13 batters in five innings, and host Seattle beat Oakland. A's All-Star Gio Gonzalez (9-9) fell to 1-4 with a 6.26 ERA in his last five starts.
Rays 9, Blue Jays 1: Robinson Chirinos hit his first major-league homer and drove in four runs, James Shields (10-9) pitched into the eighth inning, and host Tampa Bay beat Toronto.
Tigers 5, Rangers 4: Doug Fister (4-12) pitched seven innings to win his Detroit debut, and Alex Avila and Ryan Raburn homered for the host Tigers.