Mets closer Francisco Rodriguez was booed when he pitched for the first time since his arrest on a charge of third-degree assault against his girlfriend's father at Citi Field. The Mets had suspended him for the previous two games.
Halladay (15-8) also had a base hit and scored a run while winning his season-high fifth straight start, which includes a victory last weekend against New York.
The durable right-hander plowed through one of the worst offenses in baseball, limiting the Mets to four hits over eight innings. He struck out seven without issuing a walk.
Halladay's two-out single in the third off Pat Misch (0-1) was the first hit by Philadelphia in 19 batters going back to Friday night's 1-0 loss. Placido Polanco drove him in with a base hit a few minutes later, the first run the Phillies had scored at Citi Field in 38 innings.
The bumbling Mets committed three errors in the game, two of which gave Halladay a cushion.
Rookie second baseman Ruben Tejada made the first major mistake when he fielded a grounder in the fifth inning and threw it into left field while trying to start a double play, which helped Jimmy Rollins score for a 2-0 lead. Then in the sixth, All-Star third baseman David Wright let a two-out grounder go through his legs and two more runs crossed the plate.
All three were unearned, though that was probably of little solace to Misch.
The left-hander was called up from Triple-A Buffalo to make his first start of the season, and held the Phillies to eight hits over six innings. He retired the first eight batters he faced to give the Mets a chance - though that's about all it was with Doc on the mound.
Halladay effortlessly set the weak-hitting Mets down in order the first three innings, mixing a mid-90s fastball with a wicked slider that caught Ike Davis looking twice.
Jose Reyes finally connected in the fourth inning, belting a pitch to the base of the wall in the deepest part of the park for triple. The Mets failed in three tries to get him 90 feet home, though, the second straight night they stranded a runner at third base with no outs.
Halladay improved to 9-1 against the NL East, where the Phillies began the night three games back of the division-leading Atlanta Braves. He's gone at least six innings in all but one of his 25 starts this season, and hasn't walked more than one batter in a game since June 15.
Rodriguez pitched a scoreless ninth in his first appearance since an altercation at the ballpark Wednesday night.
Rodriguez recited a contrite statement before the game in which he apologized to the team and fans, but he did not take questions and refused to comment on his legal situation.
The 28-year-old reliever was booed lustily by the crowd of 39,151 when he jogged in from the bullpen and again when he was announced, though that was par for the night. The fans also booed Tejada and Wright for their errors, and Josh Thole when he struck out against Ryan Madson with the bases loaded to end the game.
NOTES: Phillies 2B Chase Utley (right thumb) was 1 for 3 with a triple in five innings for Class-A Clearwater on his first rehab assignment, while 1B Ryan Howard (left ankle) took early batting practice. Both could be back next week. ... Mets starting pitchers have only allowed seven earned runs in 55 1-3 innings over their last seven games.