Teuvo Teravainen scored twice and added an assist as the Carolina Hurricanes beat the Montreal Canadiens 6-5 on Thursday to snap their two-game losing skid.

Jordan Staal, Jeff Skinner, Derek Ryan and Justin Williams also scored for the Hurricanes (22-19-8). Cam Ward made 26 saves and defenceman Noah Hanifin had three assists.

Charles Hudon scored twice and added an assist for the Canadiens (20-23-6). Brendan Gallagher, Jeff Petry and Max Pacioretty also scored while Carey Price stopped 23-of-29 shots in defeat.

It was a poor defensive showing by both teams in the final game before the NHL all-star break.

Montreal fell behind early and tied the game on three occasions but the 'Canes held on for their third straight victory against the Canadiens.

Williams scored the winner at 9:41 of the third period as he deflected Teravainen's shot past a helpless Price. Carolina's goal came exactly 10 seconds after Pacioretty made it 5-5 with a deflection of his own.