MONTREAL -- Pascal Dupuis was more than happy to shoot a rolling puck toward the net, confident that his drive would have all the unpredictability of a knuckleball.
Dupuis scored on a slap shot 13:21 into the third period and Marc-Andre Fleury made 19 saves as the Pittsburgh Penguins stopped Montreal's three-game winning streak with a 3-2 win over the Canadiens on Thursday night.
Dupuis wound up from the top of the left circle and drove a high shot that struck goalie Carey Price's glove before going into the net.
"I actually like shooting these pucks because you don't know where it's going, so obviously he doesn't know," Dupuis said. "The puck makes funny little moves out there."
"It's always special to play in Montreal," Dupuis said. "We have five or six guys who have family and friends around here."
Price stopped 38 shots for the Canadiens, who had won three in a row after a 5-1 victory over Boston on Friday in the storied franchise's 100th anniversary game.
"Carey was great," said Montreal left winger Mike Cammalleri, whose goal streak ended at three games. "He made many saves that otherwise could have or should have been in."
Matt D'Agostini and Roman Hamrlik scored on the Canadiens' first and third shots of the second period as Montreal took a 2-1 lead. The Canadiens had been outshot 9-0 midway through the frame and 20-7 overall before they broke through.
Montreal, outshot 41-21 in the game, had an apparent tying goal waved off with 5:52 left when referee Chris Lee blew his whistle before Scott Gomez fired the puck into the net.
"I think the puck was loose, but the decision was taken during the play and we can't change it now, it's too late," Canadiens forward Maxim Lapierre said. "But I think the team gave a good effort. Carey played unbelievable again for us, and we still have to build on the last four games we've played."
The Canadiens killed each of Pittsburgh's five power-play opportunities and haven't allowed a goal in 27 straight short-handed situations over six games.
Sidney Crosby was held without a point in his second game back from a groin injury that forced him to sit out Saturday's 2-1 overtime loss to Chicago. The Penguins captain has failed to record a point in each of his last three games in Montreal.
Crosby, who scored his 20th goal and eighth in four games in a 3-2 loss to Carolina on Monday, had four goals and an assist in the Penguins' two previous games against the Canadiens this season, both home wins.
"We were staying in our game tonight," Crosby said. "We didn't give them a lot and we played really well. It was a great win for us."
Cooke drew Pittsburgh even at 2 when he redirected Gonchar's point shot past Price 17:45 into the second for his sixth goal.
"That was a huge goal, considering the way the period had gone," Penguins coach Dan Bylsma said. "The momentum was clearly in their favor and the building was pumping."
Gonchar, who recorded his 650th career point on Cooke's goal, scored his fourth goal of the season 6:38 in after taking Bill Guerin's nice backhand feed across the goal mouth.
D'Agostini made the Canadiens' first shot of the second period count when he fired a wrist shot over Fleury's right shoulder at 10:48 to tie it at 1.
Hamrlik made it 2-1 on a power play at 13:38 when he drove a slap shot from the left point past Fleury for his fifth goal.
The Canadiens are making a habit of scoring on few shots.
Montreal won 4-1 in Ottawa on Tuesday despite being outshot 46-27. The Canadiens managed only 13 shots Monday in a 3-1 win over Philadelphia in which the teams combined for 28 shots. That was a franchise low for fewest shots recorded in a game by both teams.
Gonchar has 195 goals and 455 assists in 949 regular-season NHL games with Washington, Boston and Pittsburgh. ... Canadiens D Jaroslav Spacek was back in the lineup after leaving Tuesday's game after the first period because of a lower body injury.