Despite losing, Philadelphia became the first National League team to clinch a playoff berth Sunday.
The Phillies clinched the wild-card slot when San Diego lost to Cincinnati.
Elsewhere in the NL, San Francisco jumped back into the West lead by beating Colorado and having San Diego fall to Cincinnati.
Mets 7, Phillies 3 — Carlos Beltran hit a pair of homers, David Wright also connected for New York.
The loss prevented the Phillies from clinching their fourth straight NL East title.
The two-time defending NL champions came in needing a win and a loss by Atlanta to secure the division crown. The Braves lost 4-2 to Washington, dropping Philadelphia's magic number to one.
Chase Utley hit a three-run homer for the Phillies, who will finish the season on the road with three games at Washington and three at Atlanta.
The Mets roughed up Cole Hamels (12-11) again. Hamels allowed five runs and nine hits in four-plus innings, falling to 0-4 against New York this year. The lefty had been dominant recently. He gave up just four runs in his previous six starts, a span of 43 2/3 innings.
"Just one of those days where I wasn't able to locate and be consistent," Hamels said. "Sometimes it happens. With the way I've been pitching, I know I can correct it and get it back on track."
The Phillies are 45-17 since July 21, when they trailed Atlanta by seven games. They are 19-5 in September and have a six-game lead over the Braves.
Giants 4, Rockies 2 — Matt Cain carried a no-hitter into the eighth inning for San Francisco.
The Rockies, who have dropped six of seven, fell four games behind the Giants.
Cain (13-10) held the Rockies hitless until speedy Jay Payton legged out an infield single with one out in the eighth. Pinch-hitter Melvin Mora connected for a two-run homer, ending Cain's scoreless streak at 20 innings.
Reds 12, Padres 2 — Chris Heisey homered and hit a three-run double for Cincinnati, which needs one more win or a St. Louis loss to clinch the NL Central title.
Joey Votto and Brandon Phillips also homered for the Reds.
The Reds snapped a three-game skid and won for just the eighth time in 21 games. Homer Bailey (4-3) combined with two relievers on a six-hitter.
Adrian Gonzalez hit his 30th homer for the Padres and finished with three hits. Clayton Richard (13-9) allowed six runs and five hits in five-plus innings.