Andrew Wenger and rookie Blake Smith each added their first goals of the season for the Impact (7-2-2), who remained unbeaten at home at 5-0-1.
Antoine Hoppenot, Sebastien Le Toux and Jack McInerney scored for the Union (5-5-3).
The 20-year-old McInerney entered the game with a league-leading eight goals and left it tied at the top with 36-year-old Di Vaio.
Justin Mapp had a pair of assists for Montreal. Mapp sent Wenger up the right side and his cross was blasted in by Di Vaio in the second minute.
McInerney was open on the left side to slide in a Michael Farfan pass in the fifth minute.
Mapp used his left foot to chip a ball over the middle and Di Vaio stayed just onside to push it past Zac MacMath in the 28th. Five minutes later, Andreas Romero looped a pass over a crowd in the six-yard box, where Di Vaio was waiting to volley it in.
Di Vaio had a shot at a fourth goal in the opening half but put a left-footed shot just over the crossbar in the 38th.
Montreal looked to be cruising when Hoppenot, only four minutes after coming on as a substitute, scored on a long drive from the right side that went just under the bar in the 69th.
The Impact spent much of the second half trying to set up Wenger and it clicked after the second-year striker earned a corner kick. Wenger flicked Felipe Martins' corner in for what turned out to be the winner.
Di Vaio got a big ovation when he came out, but a moment later, Montreal was caught napping again as a long throw-in was fielded by Le Toux at the edge of the penalty area, and he spun and scored on a low drive inside the far post in the 85th.
Smith put in his first MLS goal in extra time.