The Union, who also received an own goal, extended their unbeaten streak to four games. Philadelphia solidified its second-place standing in the Eastern Conference and climbed within three points of league-leading Toronto FC.
The Union won despite being without captain Alejandro Bedoya because of yellow-card accumulation.
Tajon Buchanan scored for the fifth-place Revolution, who had their two-game winning streak snapped.
New England, which fell to 0-3-1 against the Union this season, including a loss in the Round of 16 at the MLS Is Back Tournament, had been 4-1-2 overall heading into play Monday.
The Union managed only one shot on goal in the first 25 minutes, a soft left-footed strike by Brenden Aaronson.
Philadelphia took a 1-0 lead in the 34th minute on an own goal. Wagner sent a cross into the box, and a sliding Andrew Farrell kicked the ball into the goal. New England goalkeeper Matt Turner was moving the other way.
New England had 58 percent of the possession in the first half but trailed by a goal.
Early in the second half, the Revolution continued to dominate possession and Adam Buksa headed a cross just wide of the goal in the 52nd minute.
In the 65th minute, Union goalkeeper Andre Blake made a stellar save on a header in the box by Bunbury.
Philadelphia had a strong scoring chance in the 68th minute when Raymon Gaddis fired a shot that deflected off Revs defender Henry Kessler and out for a corner kick. Gaddis, a right back, has never scored in nine MLS seasons.
One minute later, Fontana chipped a shot over Turner for a 2-0 advantage.
Buchanan drilled a shot past Blake in the 81st minute to close the gap to 2-1.
New England nearly equalized a couple of times in five minutes of second-half stoppage time but couldn't convert.