Trailing 2-1 entering the frame, the National League East leaders scored three times and added an insurance run in the ninth to post their fourth straight win.
The Phillies scored all three runs after two were out. Jimmy Rollins singled off starter Mike Pelfrey, who was replaced by Mike O'Connor (0-1). Rollins then stole second and scored the tying run on Chase Utley's RBI single.
After Placido Polanco drew a walk, Tim Byrdak came in to pitch to Howard and the Phillies slugger greeted him with a go-ahead, two-run double to right.
Cole Hamels (7-2) earned the win by holding the Mets to two runs on seven hits over seven frames, walking none and fanning 10.
Pelfrey, meanwhile, limited the Phils to two runs on seven hits during a seven-inning start for the Mets, who lost for the sixth time in seven games.
Wisconsin business offering 'therapeutic cuddling' forced to close
Blake Lively's Christmas wish would bankrupt Ryan Reynolds