Winnipeg, which entered the game on a nine-game losing streak (0-7-2), began its comeback with 2:39 remaining in regulation. Tyrel Bauer scored his first NHL goal to make it 4-1 after Dylan DeMelo's dump-in took a funny bounce off the left boards.
Morgan Barron made it 4-2 at 18:03, electing to shoot on a 2-on-1 and beating Jacob Fowler glove side with a shot off the crossbar from the right circle.
Kyle Connor then scored twice on one-timers from the right circle with Stuart Skinner pulled for the extra attacker to tie the game. He cut it to 4-3 with one minute remaining before scoring again with a shot that deflected in off the stick of Noah Dobson to make it 4-4 with 32 seconds left.
Dylan Samberg completed the crazy comeback at 3:30 of overtime. Gabriel Vilardi took the puck away from Lane Hutson along the boards, allowing Adam Lowry to feed a cutting Samberg, who scored blocker side from right circle.
Bauer and Barron each finished with a goal and an assist, and DeMelo and Mark Scheifele each had two assists for the Jets (5-8-3), who were coming off a 7-0 loss at the Carolina Hurricanes on Monday. Skinner made 18 saves.
Cole Caufield scored twice, and Juraj Slafkovsky had two assists for the Canadiens (9-3-3), who had won five in a row but extended their point streak to eight games (6-0-2). Fowler made 42 saves.
Owen Beck gave Montreal a 1-0 lead at 3:05 of the first period, scoring from the top of the left circle for his first goal of the season.
Josh Anderson made it 2-0 at 18:18. He got the puck along the boards, skated into the slot, and lifted a backhand over Skinner.
Caufield extended the lead to 3-0 with a power-play goal at 4:00 of the second period, burying a rebound past a diving Skinner from the bottom of the left circle.
Caufield then made it 4-0 with another power-play goal 46 seconds into the third period. He roofed a shot from a sharp angle over the shoulder of Skinner, who was anticipating a cross-crease pass to Alex Newhook.