Halladay (16-5) gave up Brandon Phillips’ leadoff single in the first inning, then dominated the team he no-hit in the playoffs last season. His bases-loaded double in the sixth inning off Bronson Arroyo (8-11) made it 6-0.
Ryan Howard hit two of the Phillies’ four homers, giving him 29 for the season. He also reached 100 RBIs for the sixth straight year, a team record.
Howard had been tied with Hall of Famer Chuck Klein for consecutive 100-RBI seasons.
In Atlanta, Ryan Zimmerman had three hits, including a three-run home run, and Washington hit four homers to beat Jair Jurrjens and the Braves.
Michael Morse also had three hits, including a homer, while driving in three runs. Danny Espinosa and Laynce Nix also hit homers for Washington.
The Braves, coming off an unusual three-day break after two games at the New York Mets were postponed by Hurricane Irene, were shut down by Livan Hernandez (8-12). Hernandez allowed two runs on five hits and three walks in seven innings.
In New York, Javier Vazquez allowed only three singles in seven sharp innings for his first win in more than a month and the Marlins broke out of their funk with a five-run seventh to beat the Mets.
Logan Morrison had a two-run single and Mike Cameron doubled to start the big rally for the Marlins, who shuffled their slumping lineup and took advantage of a defensive gaffe on Vazquez’s bunt. Mike Stanton added his 31st homer in the ninth, an opposite-field drive into the second deck in right.
In Houston, rookie Henry Sosa allowed two hits and struck out seven over six innings, Matt Downs got his league-leading 12th pinch-hit RBI and the Astros beat the Pirates.
Jose Altuve homered in the fifth against Charlie Morton (9-8) to tie it 2-2 and the Astros broke loose with six runs on a season-high seven hits in the sixth inning.
Downs pinch hit for Sosa and singled to left for the go-ahead run. Altuve added an RBI single, J.D. Martinez drove in two runs with a single, and Carlos Lee and Jimmy Paredes also had run-scoring hits in the inning.
In Milwaukee, Edwin Jackson pitched seven solid innings and singled home the go-ahead run to help the Cardinals beat the Brewers.
Despite the win, the Cardinals still are 9 1/2 games behind the Brewers in the NL Central with have 27 games remaining.
Jackson (4-2) scattered six hits and kept Milwaukee scoreless until Corey Hart and Nyjer Morgan hit consecutive doubles to open the sixth, pulling the Brewers within 2-1. Morgan was stranded, though, as the right-hander retired Ryan Braun, Prince Fielder and Casey McGehee in order.
In Phoenix, Miguel Montero and Justin Upton each homered and drove in three runs, helping the Diamondbacks beat the Rockies to tie a team record with their 11th straight home win.
The NL West-leading Diamondbacks have won eight straight overall, their longest streak since 2008, and the home streak matches the mark set in 2000 and 2003.
Gerardo Parra had a two-run triple off Rockies starter Aaron Cook (3-8), four of Arizona’s 14 hits and scored three runs.
In Los Angeles, Andre Ethier’s grand slam capped an eight-run second inning that included six walks by Tim Stauffer — three with the bases-loaded — to help the Dodgers beat the Padres.
The Dodgers have won seven of their last eight, while the last-place Padres have dropped six in a row and lost six consecutive at Dodger Stadium.
Hiroki Kuroda (11-14) allowed seven hits and four runs in six innings, struck out three and walked two to win his career-high fourth in a row. He tied his career high for wins set last season.
In San Francisco, Alfonso Soriano drove in two runs and hit one of the longest homers at AT&T Park, leading the Cubs to a win over the Giants.
Geovany Soto added a two-run double and Darwin Barney also drove in a run for the Cubs, who won their second straight.
Jeff Keppinger had three hits and drove in two runs for the Giants, who lost their third in a row to fall a season-high six games behind Arizona, which beat Colorado 9-4, in the NL West.
