MONTREAL — It took one of Jonathan Drouin's best games of the year to end the Colorado Avalanche's ten-game winning streak.

Drouin had his first three-point game of the season as the Montreal Canadiens stunned the high-flying Avalanche 4-2 on Tuesday. The forward scored the winner and added two assists.

"Definitely when you play a team that's hot like that, you want to show your composure and we did that the whole game," said Drouin, who scored his seventh goal of the season. "At the end we stopped skating a bit but overall it was a very good game."

Colorado had not lost since Dec. 27, 2017 against the Arizona Coyotes. They outscored their opponents 41-16 over that stretch without ever conceding the game's first goal.

"We knew we were playing a good skating team and a side that has a lot of skills," said Drouin. "Our skating game had to be a part of that. That's when we're at our best, when we're skating and forechecking. I think we did that the whole night."

The 22-year-old put the Canadiens up 3-0 against the league's hottest team at 12:36 of the third period on a great individual effort by Jeff Petry. The defenceman entered the zone with speed along the half wall and made a perfect backhand pass to Drouin for the easy tap-in.

Drouin was the provider on the game's first two goals.

Nicolas Deslauriers set the Avalanche back on their heels by putting the home side in front at 5:42 of the second. After Drouin saw his shot blocked, Deslauriers got his stick on the loose puck in the slot and beat Jonathan Bernier five-hole for his career-high seventh goal of the season.

Alex Galchenyuk increased Montreal's lead with a power-play goal at 7:58. After sustained puck possession by the Canadiens, Drouin connected with Galchenyuk, who fired a one-timer past Bernier.

"(Drouin) was very good tonight," said head coach Claude Julien. "He skated very well and had some nice plays. He was really involved in the play tonight."

The slumping Canadiens (20-22-26) were unlikely streak-breakers coming into the contest, having won just once in their past five games.

The Avalanche (27-17-3) were coming off a 4-2 victory over the Toronto Maple Leafs on Monday and their legs were heavy to start the game. Colorado fired just five shots on Carey Price in the first, none too dangerous.

Deslauriers' second-period goal saw the Avs trailing for just the second time over the course of their 10-game-winning streak.

"You know, we had a great run. Ten games," said Avalanche coach Jared Bednar. "It hasn't moved us up the standings that much. We're just sitting right in the thick of things. Most important thing is we turn the page. It was fun, it was good, and we'll make sure to start another one."

Down 3-0 with time running out, Colorado scored a couple of late consolation goals.

Nathan MacKinnon ruined Price's shutout bid at 14:11 with a shot from the point before Brendan Gallagher answered back with his 17th of the season, into the empty net.

J.T. Compher added a second for the Avs with 12 seconds remaining on the clock.

Price stopped 20-of-22 shots for his 14th win of the season.

Bernier stopped 36 shots in defeat, dropping to 0-7-2 when playing in Montreal. He's also 1-10-3 all-time versus the Canadiens.

"They worked harder than us tonight," said Bernier. "We lacked a lot of energy. We didn't create enough scoring chances. We can't get too down obviously. Everybody is a little sour right now. We just have to learn from that game tonight. We didn't compete."

Notes: Colorado's longest franchise winning streak was 12 games, in 1999.