David Desharnais and Paul Byron scored for Montreal (30-14-7), which is 18-5-3 at home.
Buffalo defenseman Dmitry Kulikov scored with 3:56 remaining to make it 5-1 and end Carey Price's shutout bid. Price, who made 37 saves, lost a shutout with 1.1 seconds remaining in a 5-1 win against the Calgary Flames on Jan. 24.
Brian Gionta scored on the power play to make it 5-2 with 2:12 remaining.
Robin Lehner made 30 saves for Buffalo (20-20-9), which has lost two straight games after winning three in a row in overtime, including 3-2 at Montreal on Jan. 21.
"We did have opportunities; it wasn't as if it was 19 chances to zero," Sabres coach Dan Bylsma said. "We had plenty of opportunities, but we played into their speed game. They played a fast game, and we handed them the puck, and they capitalized on a lot of the chances they had."
Desharnais and defensemen Andrei Markov and Greg Pateryn each returned from injury for Montreal, and defenseman Nikita Nesterov, who was acquired in a trade from the Tampa Bay Lightning on Thursday, made his Canadiens debut.
Desharnais scored in his first game since Dec. 6 to increase the lead to 3-0 at 11:12 of the second period.
Byron made it 4-0 with his 14th goal with 1:22 left in the second.
"They look faster when we're turning the puck over and we're not moving our feet," Gionta said. "We allowed them to get to their game."