The win, which came following a 5-2 setback Friday night in Ottawa, was Montreal's eighth in 10 games. Buffalo lost in regulation time for only the second time in 10 matches.
Koivu came off the bench to intercept Ales Kotalik's pass and go in alone to beat Ty Conklin just 3:22 into the third period for a 4-2 Montreal lead.
But Dainius Zubrus made it 4-3 when he jumped on a loose puck in the Montreal crease at 7:15 to set up a tense ending to an otherwise quiet match.
Michael Ryder, Radek Bonk and Maxim Lapierre also scored for the Canadiens (41-32-6), while Daniel Briere and Thomas Vanek had the other goals for Buffalo (50-21-7).
The Sabres, 6-4 winners over the New York Islanders on Friday night, surprisingly gave Conklin only his second start since joining the team in February from Columbus.
He didn't get a lot of help from a Buffalo team that was not its usual swarming self.
A turnover on a Montreal breakout allowed Briere to go in on the left side and beat Jaroslav Halak 9:20 into the game.
Montreal got it back when Francis Bouillon's weak point shot was deflected by Ryder and went between Conklin's pads at 15:33.
The Canadiens opened a 3-1 lead in the second when Bonk came off the bench to move in and bang his own rebound past Conklin at 6:39. Then Lapierre shovelled Alex Kovalev's pass in from the edge of the crease at 8:16.
But Vanek tipped his 39th of the season out of the air past Halak with 1:01 left in the period.
The Sabres got a puck into the Montreal net with 4:31 remaining the game, but it was waved off and the video review showed Drew Stafford had kicked the puck in.
The Canadiens at home to Boston on Tuesday and finish the regular season against the Rangers in New York on Thursday and in Toronto on Saturday night.
Buffalo has four games left, starting Tuesday in Pittsburgh. The others are against Boston, Washington and Philadelphia.
Notes - Montreal's Steve Begin played his 300th NHL game . . . The Sabres scratched Clarke MacArthur and Andrew Peters while Paul Gaustad (ankle) and Maxim Afinogenov (wrist) remain sidelined . . . Montreal scratches were Sergei Samsonov, Josh Gorges and Garth Murray . . . Alexander Perezhogin missed his 13th game with a concussion.