Glen Murray, Marco Sturm, Shean Donovan and Wayne Primeau also scored for the Bruins (13-10-3), who have won four of their last five games and snapped a six-game losing streak against Montreal dating back to Feb. 2.
Guillaume Latendresse, Michael Ryder, Mike Johnson, Alexander Perezhogin and Sheldon Souray scored for the Canadiens (15-8-3) in front of 21,273 fans at the Bell Centre. Montreal has lost three of its last five games.
Canadiens goalie Cristobal Huet was pulled for the first time of the season early in the second period, allowing four goals on 16 shots. After allowing only eight goals over a six-start winning streak from Nov. 13-28, Huet has allowed 11 goals on 103 shots in his last three games.
His replacement David Aebischer stopped 12 of 14 shots and took the loss after the Canadiens erased a 4-1 second period deficit with him in net, but still lost on Stuart's late goal.
Bruins goalie Tim Thomas, starting for the 13th time in 14 games, made 34 saves. It was the second straight game Thomas allowed a lead to slip away after Carolina turned Boston's 2-1 second period lead Saturday night into a 5-2 Hurricanes win, but this time it was Thomas and the Bruins who were victorious.
With the game tied 4-4 at the start of the third period, the Bruins took the lead at 10:35 when Stuart's shot from the point went off Souray's right skate and past Aebischer, but Souray atoned almost immediately by scoring his 10th of the season on the power play at 12:47 of the third.
But with only 1:48 left in regulation, another long point shot by Stuart found its way through a crowd and beat Aebischer for his fourth goal of the season, giving Boston the 6-5 win.
Starting the second with a 2-1 lead, the Bruins pounced with two quick goals to chase Huet.
Marc Savard picked off an errant clearing pass by Francis Bouillon to set up Donovan for his third of the year at 1:48 of the second period. With the Bruins shorthanded, Primeau picked up a loose puck in the neutral zone and beat Huet with a long wrister at 3:12, ending the Canadiens netminder's evening.
The goaltending change appeared to spark the Canadiens and they came back with three goals to tie it 4-4 before the end of the period. Ryder scored a power play goal at 4:37 when he came out of the corner and surprised Thomas with a quick wrist shot for his seventh of the season. Johnson scored his fifth at 15:54 when he converted a rebound of a Craig Rivet point shot, and Perezhogin tied it at 19:21 when his long wrist shot beat a screened Thomas for his fourth of the season.
Montreal went ahead 1-0 on Latendresse's fifth of the season at 9:27 of the first. Boston tied it at 16:38 when Murray banked one in off Huet from behind the net for his 14th of the season, and went ahead at 18:15 when Sturm scored his fifth on a breakaway.
Notes: The clock on the Bell Centre scoreboard stopped working after Souray scored in the third period, and the final 6:18 of regulation were played using a clock on the advertising panels. ... Canadiens D Craig Rivet, who left Montreal's 4-3 shootout win over the Toronto Maple Leafs in the second period after being struck in the arm by a Mats Sundin slapshot, was back in the lineup. ... Canadiens D Mark Streit was back in the lineup after being a healthy scratch Saturday as head coach Guy Carbonneau once again dressed seven defencemen. Winger Aaron Downey and D Janne Niinimaa were healthy scratches. ... Bruins winger P.J. Axelsson missed his second game with a foot injury, while D Paul Mara missed his third game with a thigh contusion.