Josh Anderson had a goal and an assist for Montreal.
Jesperi Kotkaniemi and Brendan Gallagher also scored for the Canadiens.
Carey Price made 34 saves for Montreal, who picked up the win in his 700th career game.
The Canadiens moved to 13-8-7 with the win.
Kyle Connor had a pair of power play markers for the Jets.
Connor Hellebuyck turned aside 29 shots for Winnipeg, who dropped to 17-9-2.
Montreal scored first just over the four minute mark when Jesperi Kotkaniemi finished off a pretty three-way passing play to make it 1-0 just over the four minute mark.
The goal was his 4th of the season.
With Neal Pionk off for hooking Josh Anderson scored to put the Canadiens up 2-0 after he pounced on a bouncing puck and snapped it past Hellebuyck 5:33 into the second period.
The Jets were on their heels, giving up two quality scoring chances the rest of the period by Nick Suzuki and Tomas Tatar.
Kyle Connor got Winnipeg on the board on the power play 8:08 into the second when he took a partner pass from Josh Morrissey following a faceoff win by Paul Stastny, skated in and beat Carey Price with a low shot just inside the left post.
Brendan Gallagher was awarded a penalty shot with 7:49 remaining in the second period after being fouled from behind by Jets defenceman Josh Morrissey.
He failed to score on the awarded shot.
Jeff Petry nearly restored the Montreal lead to two when he hit the post on a shot from the right point at 14:51 of the second.
Tyler Toffoli scored with just over 46 seconds left in the second period when Jets defenceman Neal Pionk, who had scrambled to get to a loose puck, dumped it up the center of the ice and was intercepted by Toffoli, who skated in and fired the disc past Hellebuyck.
Kyle Connor pulled the Jets to within a goal on the power play after he one timed a Josh Morrissey feed 5:47 into the third, beating Price high glove side to make it 3-2.
The goal was his 14th of the season.
Tyler Toffoli added an empty netter with 48 seconds left in regulation to seal the win for the Canadiens.
The goal was his 17th of the season.
The two teams face each other again Wednesday night in Winnipeg.
SHOTS-MONTREAL 31 WINNIPEG 36