The Union are unbeaten in their last three games.
D.C. United hasn't won since Sept. 2, a 1-0 victory over the New York Red Bulls.
D.C. United dominated possession in the first 15 minutes and had two good scoring chances in the 15th minute. After an errant throw-in at midfield by Philadelphia's Kai Wagner, D.C. United took advantage and created shots by Asad and Edison Flores in the box.
Both shots were blocked by Union defenders, however.
The Union managed only two shots on goal with no corner kicks in the first half.
In the 49th minute, Fontana took advantage of a pass through the box by Sergio Santos for his fifth goal of the season and a 1-0 lead. The ball appeared to ricochet off a D.C. United defender before reaching Fontana.
Pines redirected a cross just wide of the goal in the 70th minute. One minute later, Pines then scored on a header to tie the game at 1. It was Pines' first career goal in Major League Soccer.
Asad converted a penalty kick in the 75th minute following a hand ball in the box by Alejandro Bedoya and D.C. United went ahead 2-1.
McKenzie blasted a shot from about 30 yards out past Seitz to equalize at 2 in the 87th minute. This was McKenzie's first career goal as well.