Tajon Buchanan was a force for the Revolution, as he instigated an own goal and assisted on the Revs' second goal of the game.
The decider was set up on a breakout by the Revs in the 84th minute. Gustavo Bou delivered a cross to Adam Buksa, who was denied on a brilliant save by Bill Hamid. But the rebound set up Bunbury for the goal into the right corner for the brace and the win.
Buksa also scored in the 30th minute, and Matt Turner made two saves for the Revolution (8-6-8, 32 points), who snapped a three-match winless streak and improved to 3-0-1 against D.C. United this season.
Buchanan twice used his quickness on the right side to impact the game. The first time forced Russell Canouse into an OG in the 54th minute to tie the game at 2-2. Buchanan again would torture United with a centering pass in front that Bunbury delivered in the 67th minute to give the Revs a 3-2 lead.
It was Bunbury's seventh and eighth goals of the season.
Hamid finished with six saves for D.C. United (5-11-6, 21 points), who saw their three-match winning streak end.
The Revs trailed 2-0 after 26 minutes.
D.C. United jumped to a fast start as Edison Flores found an unmarked Asad open at the back door for an easy conversion. Asad's low shot skipped off the hands of Turner and into the net for his third of the season.
D.C. United doubled the advantage after a defensive breakdown by New England allowed Yao to unleash a shot that caromed off the foot of Revolution defender Henry Kessler and into the net.
Buksa halved the deficit in the 30th minute after his left-footed shot off a set piece beat Hamid. Buksa's goal was his team co-leading sixth of the season and third against D.C. United.