The Bruins moved within a point of the New York Rangers for the best record in the Eastern Conference with their 11th win in 13 games. The Canadiens have dropped four out of six.
Jordan Caron produced his second goal of the season 1:23 into the contest and Boston maintained a 1-0 lead until Milan Lucic put a backhander past Carey Price 3:43 into the third.
Montreal ended Thomas' shutout bid when Yannick Weber scored on the power play with 7:14 to play.
The Canadiens began what will likely be a lengthy stretch of games without captain Brian Gionta, who underwent surgery Wednesday to repair a tear in his right biceps. Club officials said he would be out indefinitely.
Montreal forward Michael Cammalleri also did not take the ice in the third period amid reports he had been traded.
Price stopped 30 shots in taking the loss.