All-Star Tim Thomas allowed a season-high six goals, making up for an off-night in the net by squaring off with Montreal counterpart Carey Price during a second-period fight that left the penalty boxes overflowing and the ice littered with equipment.
Michael Ryder had two goals, and Brad Marchand, Dennis Seidenberg and Adam McQuaid also scored for Boston, which beat its Original Six rival for the first time this season. David Krejci had three assists.
Max Pacioretty scored two of Montreal's four power play goals, and Brian Gionta scored his 200th NHL goal as the Canadiens lost in regulation for just the third time in 10 games.
PREDATORS 4, RED WINGS 1
In Detroit, Martin Erat scored the first of Nashville's four goals to chase Jimmy Howard, and Pekka Rinne made 34 saves to help the Predators beat Detroit.
David Legwand gave Nashville a two-goal lead in the first period. Colin Wilson scored early in the second and Sergei Kostitsyn made it 4-0 midway through the period to end Howard's night.
Howard got pulled after giving up four goals on 16 shots and was replaced by Joey MacDonald.
SHARKS 3, BLUE JACKETS 2
In Columbus, Ohio, Patrick Marleau scored from a sharp angle with 4:51 left to lift San Jose.
The Sharks have earned at least one point in 10 consecutive games (9-0-1).
Joe Pavelski dug the puck off the back wall and passed to Marleau, who flipped the puck at goalie Steve Mason from a couple of feet away from the goal line on the left wing. Pavelski helped distract Mason as the puck slipped into the net.
Kent Huskins and Kyle Wellwood also scored for the Sharks, who have won five in a row. Antti Niemi made 42 saves.
Kristian Huselius and Grant Clitsome had first-period, power-play goals for the Blue Jackets, who had won three in a row.