Winnipeg couldn't have asked for better opportunities to keep its unbeaten streak alive and failed.
The Jets had several solid scoring chances, including an early two-man breakaway and numerous Montreal giveaways, and also hit four goalposts. And when they did find the net, Carey Price was there to stop them, leading the Canadiens to a 3-0 victory on Tuesday night.
Price, who made 29 saves in notching his first shutout of the season, has stopped 59 of the last 60 shots he's faced after helping beat the Minnesota Wild 4-1 his last time out. His save percentage has jumped from .907 to .918 in his last two games.
"I can't score on him in practice, and it really hurts my self-esteem," Montreal's Mike Weaver said with a grin. "He's there for every key save out there. He's able to stop the best goal scorers out there."
The Jets took their first regulation loss in more than two weeks.
"We were trying to be perfect with the shot, pick it and put a lot of heat on it," Winnipeg head coach Paul Maurice said. "We were missing the net on some chances that we just need to get to the net.
"It's a loss, so you're stinging right now. But that's probably how a loss should look. You're on the road, it's a tight game, you're getting some chances, you stick with it, doesn't go for you, move on to the next town."
Early in a scoreless first period, Evander Kane and Blake Wheeler walked in all alone on Price, with Kane taking the shot on Montreal's netminder rather than passing the puck.
Later in the period, with the Habs on a power play, P.K. Subban overskated the puck as he crossed his own blue line, handing it to Winnipeg's Mark Scheifele. Scheifele beat Price to his right, but his shot ricocheted off the post.
Scheifele hit another post midway through the second period, just minutes after Montreal's Lars Eller scored the first goal of the game.
"We like the chances that we've been getting. That's been a theme for a while," Maurice said. "I'd like Mark to get one on the inside of the post one of these days instead of the outside. We had a few. On the road, you need one of those to go fairly early for you."
With the Canadiens up 1-0, the Jets couldn't make the most of another Subban giveaway, this time in the neutral zone. After Bryan Little stripped Subban of the puck, the Winnipeg forward hit yet another post.
Perhaps the Jets' best chance of the game came in the final seconds. With Ondrej Pavelec pulled for an extra skater and Jiri Sekac in the penalty box for tripping, the Jets threw everything they had at Price. A bouncing puck fell to Kane at the side of the goal, but his shot towards the gaping net was deflected over the glass by Andrei Markov's stick.
"One post, two posts, missed an empty net," Maurice said. "It was just the general theme that we've been working on."
Montreal (11-4-1) is now riding a three-game winning streak after hitting a rough patch 10 games into the season. The Jets (8-6-2) are 6-1-2 in their last nine.
Eller scored the first goal for Montreal at 2:21 of the second. The third-line center was at the right place at the right time after newcomer Sekac drove hard to the net. Pavelec stick-checked the puck right to Eller, who backhanded the puck into a wide-open net.
"Most of the time, that's going to be the goal — driving the net and getting a good rebound," Eller said. "Jiri had a good drive to the net there, created good space for me, and I picked up the rebound. A lot of times, it's as simple as that."
It marked just the fifth time the Habs scored first this season, and they've won every game.
Montreal made it 2-0 at 7:47 of the third period when Alex Galchenyuk put home a pretty no-look shot from the slot. After a Tom Gilbert blast from the point hit traffic in front of the net, Galchenyuk found the loose puck and slipped it past Pavelec, who got a piece of it with his stick.
The Jets pulled Pavelec, who made 24 saves in defeat, with three minutes remaining in the game. Tomas Plekanec scored his sixth of the season into the empty net.
Montreal is 7-1-0 in the last eight games against the Jets and snapped Winnipeg's eight-game unbeaten run in regulation time.
The sellout crowd at the Bell Centre was convinced the Canadiens had taken the lead in the game's first minute when Brendan Gallagher put the puck past Pavelec. The linesman, however, judged the speedy forward had crossed the blue line before the puck, and the goal was waved off.
Montreal, which has the third-worst power play in the NHL — the Habs are converting less than 8 per cent of their man advantages — couldn't solve Winnipeg's penalty kill, going 0 for 3.
Notes: Earlier in the day, Montreal traded left winger Travis Moen to the Dallas Stars for defenseman Sergei Gonchar. The 40-year-old blue-liner, now in his 20th NHL season, has one point in three games this year. ... Drayson Bowman made his Montreal Canadiens debut. The 25-year-old played 6:06. ... Subban dressed for his 300th career game. ... The Jets were shut out for the third time this season. ... Montreal is undefeated when leading after two periods (5-0-0). ... Winnipeg continues its five-game road swing with a stop in North Carolina next.