Brendan Gallagher and Cole Caufield each had a goal and an assist for Montreal, and Artturi Lehkonen and Mike Hoffman also scored for the Canadiens (15-34-7), who have won seven of their last eight games. Chris Wideman chipped in two assists and goalie Sam Montembeault made 28 saves.
Caufield capitalized on an odd-man rush to open the scoring midway through the first period, sending a wrist shot past Smith for his eighth of the season.
The Oilers tied it 22 seconds later as Leon Draisaitl made a great feed to Kane in front of the Montreal goal, and he spun around and beat Montembeault for his eighth goal in 17 games since signing with Edmonton.
Montreal surged back ahead with 39 seconds left in the period as Gallagher ended an 18-game goalless drought by scoring on a power-play rebound.
Edmonton knotted the game again five minutes into the second period when McLeod tucked in a rebound from a tough angle. The goal survived a review as Montreal argued that Zach Hyman had interfered with Montembeault on the play.
The Habs then had a goal of their own by Suzuki called back due to an offside call, but Suzuki scored the decisive goal on the same power play, his 13th, to make it 3-2.
The Canadiens extended the lead with a short-handed goal midway through the third. Brett Kulak passed in front to Lehkonen and with Smith out of position flipped it into a wide-open net.
Hoffman scored an empty-net goal for Montreal with less than four minutes left.
Canadiens: At Vancouver Canucks on Wednesday night.
Oilers: At Calgary Flames on Monday night.