With the win, Montreal also extended its point streak to 10 games.
After neither team generated much offence in the first period, Prust wasted no time putting the Canadiens ahead in the second, scoring his third of the season after only a minute.
Prust started the play when he stole the puck from former Canadien Matt D'Agostini at the Buffalo blue-line before dishing it off to Travis Moen. Moen quickly passed it to Ryan White, who completed the tic-tac-toe by feeding Prust in the slot.
The Sabres responded with increased pressure of their own, and Ennis levelled the score at 8:35. Ennis took a bouncing, saucer pass from Christian Ehrhoff and rifled the puck in the roof of the net.
Plekanec put the Canadiens ahead for good at 17:44, shooting the puck off the post and in the net despite being surrounded by three Sabres players.
Galchenyuk doubled the Canadiens' lead 23 seconds later, scoring the eventual game-winner. Left alone to the left of Enroth's goal, Galchenyuk made no mistake on a one-time shot for his eighth goal of the year.
Girgensons reduced the deficit at 4:04 of the third period after a great individual effort saw him control a bouncing puck, go around Canadiens defender P.K. Subban, and beat Price by poking the puck into the net.
The Canadiens have only lost once in regulation time in the last 14 games (11-1-2), and have not allowed more than three goals in any game on that stretch.
Notes: With the win, Montreal retained top spot in the Atlantic division. … The Sabres have now lost their last six road games … Enroth got the start in net in place of American goaltender Ryan Miller, who leads the league in losses with 16. … Rene Bourque, who missed the last two games with an upper body injury, was again left out of Montreal's lineup. George Parros and Francis Bouillon were healthy scratches. … Montreal beat the Sabres 3-1 less than two weeks ago in Buffalo. The teams will meet twice more this season … The Canadiens take on the Los Angeles Kings at the Bell Centre on Tuesday.