Real Salt Lake twice took the lead on the road, but Montreal pulled out a stoppage-time winner through Matteo Ferrari.
The first goal came in the seventh minute. Following a flowing passing move by Salt Lake, Lovel Palmer drilled the ball into the box. It bounced off the foot of Matteo Ferrari and looped over goalkeeper Troy Perkins for an own goal.
Host Montreal worked back into the match and equalized shortly before halftime through Felipe Martins. Jeb Brovsky surged forward through the middle and kicked the ball out wide. Justin Mapp crossed with his right and Felipe finished.
In the second half, RSL once again took the lead. Following a corner, there was a scramble in the box. Kyle Beckerman pounced on the loose ball, spun and slipped the ball past Perkins in the 77th minute.
This time the lead only stood for three minutes. With his back to goal, Andrew Wenger one-timed a quick pass through the defense. Barely onside, Marco Di Vaio hit a shot off Nick Rimando and the post for his sixth of the season.
Ferrari made amends for his earlier own goal by scoring at the correct end three minutes into stoppage time. The Italian defender finished off a corner to make it 3-2 Montreal.