Despite allowing five runs and seven hits in 6 1-3 innings, Halladay (10-7) improved to 4-0 in his last five starts.
Juan Pierre and Chase Utley had three hits apiece for Philadelphia, which finished with 15 overall while winning for the 14th time in the last 18 games. The five-time defending NL East champion Phillies, who reached .500 for the first time since June 4, are making a late playoff push. They began the day five games behind St. Louis in the NL wild-card race.
Giancarlo Stanton homered for Miami, which has lost nine of 13. Stanton went deep for the 14th time in his last 17 road games to up his league-leading road total to 21 homers.
Marlins starter Nathan Eovaldi (4-12) gave up five runs and eight hits in four-plus innings.
Jonathan Papelbon pitched a scoreless ninth for his 33rd save in 37 chances.
DIAMONDBACKS 1, DODGERS 0
PHOENIX (AP) — Ian Kennedy pitched neatly into the eighth inning and the Diamondbacks used an unearned run to beat Clayton Kershaw and the Dodgers.
Arizona left fielder Jason Kubel robbed Luis Cruz of a two-run homer with a leaping grab at the wall to end the fifth inning.
The lone run came in the seventh, when Paul Goldschmidt reached on shortstop Hanley Ramirez's throwing error and scored from first on Miguel Montero's double.
With San Francisco's win at Colorado, the Dodgers fell six games behind the first-place Giants in the NL West. Arizona ended a six-game home losing streak.
Kennedy (13-11) gave up four hits in 7 1-3 innings. Kershaw (12-9) allowed three hits in seven innings.
After regular closer J.J. Putz blew consecutive saves last week, David Hernandez came on in the ninth and gave up a two-out double to Shane Victorino. Adrian Gonzalez then struck out looking.
GIANTS 9, ROCKIES 8
DENVER (AP) — Madison Bumgarner hit a three-run homer on a night when he struggled on the mound and Brandon Belt drove in four runs for NL West-leading San Francisco.
Belt broke a tie in the fifth with a two-run double. He also brought in a run on a fielder's choice and added a solo homer for the Giants, who are 20-7 on the road since the All-Star break.
Bumgarner was roughed up by the Rockies, allowing five runs and 11 hits in 4 1-3 innings. But the left-hander gave the Giants a big boost when he drove a 93-mph fastball from Jhoulys Chacin into the left-field seats in the fourth.
Pinch-hitter Tyler Colvin belted a two-run homer for Colorado before Javier Lopez came in and retired Jason Giambi for his seventh save.
George Kontos (2-1) got the win and Carlos Torres (4-2) was charged with the loss.
BREWERS 5, BRAVES 0
MILWAUKEE (AP) — Marco Estrada pitched shutout ball into the seventh inning, and Rickie Weeks and Aramis Ramirez homered for streaking Milwaukee.
The Brewers won their eighth in a row at Miller Park and reached the .500 mark for the first time since April 24. Milwaukee has surged back into the NL wild-card race by winning 17 of 22 overall, and beat the wild card-leading Braves for the second straight day.
Estrada (3-6) was dominant from the start, allowing only two singles to Andrelton Simmons in the first five innings. Estrada allowed four hits in 6 2-3 innings and struck out six.
Four Milwaukee pitchers combined on a five-hitter.
Atlanta's Tim Hudson (14-6) gave up four runs and seven hits in 6 2-3 innings.
NATIONALS 5, METS 3
NEW YORK (AP) — Bryce Harper had his first four-hit game and pinch-hitter Tyler Moore launched a go-ahead homer off R.A. Dickey in the seventh inning, powering Washington to the victory.
Harper doubled and singled twice off Dickey after the teen star entered 0 for 10 with six strikeouts against the knuckleballer. Leadoff batter Jayson Werth reached base all five times for the NL East leaders, who have won seven straight and 11 of 12 at Citi Field.
Looking for a win over baseball's top team to boost his Cy Young Award resume, Dickey (18-5) mostly pitched out of trouble for seven solid innings. But he gave up a two-run shot to Moore that made it 3-2 in the seventh.
Tom Gorzelanny (4-2) got the win and Tyler Clippard allowed a solo homer to Scott Hairston in the ninth before securing his 31st save in 34 attempts.
In a tradition that began after the terror attacks of Sept. 11, 2001, the Mets wore caps commemorating the NYPD, FDNY and other first responders during batting practice and the national anthem.
REDS 5, PIRATES 3
CINCINNATI (AP) — Mike Leake pitched seven innings, had a pair of hits and scored on a dash home off a wild pitch, helping Cincinnati to the win.
Leake (8-9) gave up nine hits, including Alex Presley's solo homer and pinch-hitter Gaby Sanchez's two-run shot. Leake singled and eventually scored during a decisive three-run second inning off Kevin Correia (10-9).
Brandon Phillips hit Correia's first pitch of the game for a homer and doubled home another run. Scott Rolen added a solo shot.
The Pirates have lost five in a row and 22 out of 31, falling out of contention in the NL Central.
Jonathan Broxton pitched the ninth for his first save in three tries with the Reds. Regular closer Aroldis Chapman is resting due to a tired pitching shoulder.
ASTROS 1, CUBS 0
HOUSTON (AP) — Jimmy Paredes singled and scored an unearned run in the third inning, lifting Houston to the victory in the matchup of the worst teams in baseball.
It was an otherwise tough night for the second baseman, who committed three errors. Paredes has started the last three games at second base with All-Star Jose Altuve out with an abdominal strain.
Houston starter Jordan Lyles (4-11) yielded two hits and struck out five in five innings. Five relievers completed the shutout, with Wilton Lopez working the ninth for his fourth save.
The last error by Paredes came in the seventh inning, and interim manager Tony DeFrancesco lifted him for Altuve to start the eighth.
Cubs starter Justin Germano (2-7) allowed three hits in five innings and tied a career high with eight strikeouts. He lost his fifth straight start.
PADRES 6, CARDINALS 4
SAN DIEGO (AP) — Logan Forsythe and Alexi Amarista had key hits in a five-run fourth inning and San Diego sent St. Louis to its 10th loss in 13 games.
St. Louis maintained a one-game lead over the Los Angeles Dodgers for the NL's second wild-card berth but dropped 10 1/2 games behind Cincinnati in the NL Central.
Forsythe, a homer shy of the cycle in Monday night's win over St. Louis, doubled in two runs and Amarista added a two-run triple as San Diego erased a 2-0 deficit in the fourth.
Edinson Volquez (10-10) allowed three runs — two earned — and four hits in 5 1-3 innings, striking out six and walking six. He has a career-high 100 walks, the most in the majors this season.
Adam Wainwright (13-13) allowed five runs — two earned — and five hits in six innings.