Matko Miljevic gave Montreal the lead in the first half before Philadelphia struck twice in 14 minutes of the second half courtesy of own goal by James Pantemis and a Kai Wagner effort.
Sunisu Ibrahim rescued a point for the hosts when he scored in the 95th minute as Montreal moved into seventh in the Eastern Conference standings while the Union remain third.
Story of the game
In the 13th minute, Montreal had the first chance of the match as Rudy Camacho's shot from the right went high over the crossbar. Two minutes later, Matt Freese saved a header from Djorde Mihailovic.
The hosts would eventually take the lead in the 33rd minute as Mihailovic provided Miljevic with a cut-back pass from a short corner and he was left unmarked, beating Freese from the top of the box.
A Jack Elliott from outside the box was the best chance of the first half for Philadelphia.
On 63 minutes, the Union were level. Jamiro Monteiro sent the ball into the center of the box and Jakob Glesnes used his back to direct the ball towards goal, which hit the right post and bounced off of Pantemis.
Freese came up big when Elliott slid in to break up a cross in the box, but he deflected the cross towards the net and Freese did well to change direction quickly and pluck the ball out of the air, preventing an own goal. Moments later, he elevated to tip a blast from Joaquin Torres over the bar.
The visitors were in front when Wagner was over the ball on the right side of the box and sent it into the center where it bounced on the ground and then goes directly into the back of the net.
It looked as though Philadelphia would leave Canada with all three points, but Mustafa Kizza picked out Ibrahim with a left-footed cross and the Nigeria youth international headed home to rescue a point for the hosts.
Man of the match: Matko Miljevic
The 20-year old American proved manager Wilfried Nancy right for starting him atop thre lineup Saturday afternoon. The 20-year-old may well be a key offensive weapon as the club makes a push for the MLS Cup Playoffs.