MacKinnon added three assists and Compher had two helpers for the Avalanche, who won for the fifth time in seven games. Artturi Lehkonen and Mikko Rantanen also scored for Colorado, and Alexandar Georgiev made 24 saves.
''He's the leader for us every night and drives the bus, and he did it again tonight,'' Compher said about MacKinnon. ''He doesn't always get the goals, but it was nice to see him get a few tonight.''
Tage Thompson scored his 15th goal of the season and Alex Tuch, JJ Peterka and Dylan Cozens also scored for the Sabres, who have lost three of four. Ukko-Pekka Luukkonen stopped 28 shots.
Buffalo led 2-1 after the first period but Colorado went ahead for good when it scored twice during a 5-on-3 power play midway through the second period. MacKinnon made it 2-2 and Lehkonen scored 49 seconds later. MacKinnon added his second goal 2:04 after that to put the Avalanche ahead 4-2.
''It was a big moment in the game and that was the best our power play's looked all year, in (those) 45 seconds,'' Avalanche coach Jared Bednar said. ''We were getting a scoring chance on that every 10 seconds until it went in the net.''
Cozens' power-play goal cut the lead to 4-3 with 5:55 left in the second, but Compher's second goal with 2:44 left in the period made it 5-3.
''I know (Cozens) is only 21, but he looks like a veteran playing with two younger guys,'' Sabres defenseman Mattias Samuelsson said. ''I think he's really taken the next step and it's fun to watch.''
Tuch's goal seven seconds into the third period cut the Avalanche's lead to 5-4. The goal was his 200th NHL point.
MacKinnon foiled a breakaway attempt by former Avalanche forward Tyson Jost with 1:20 left in the game.
''Great conscience to his game on the checking side of things, involved that way, really good awareness of what they were trying to do off the rush and sort of nullify that and then to be able to answer the way he did,'' Bednar said.
Rantanen scored into an empty net, his 14th, with 35 seconds remaining.
Compher scored the game's first goal, but Buffalo rallied with goals by Peterka and Thompson in the first period.
''Win or lose, you've got to take something from every game, and there were things we didn't like from last game and parts we did better tonight,'' Compher said. ''Even though we won tonight, we still have things we can work on.''
GAME 300 FOR DAHLIN
Sabres defenseman Rasmus Dahlin played in his 300th game. Dahlin has the second-most points (186) through 300 games for a defenseman selected with the No. 1 pick in the draft. He trails only Denis Potvin, who had 289 points.
MACKINNON CLIMBS FRANCHISE LEADERBOARD
MacKinnon surpassed teammate Gabriel Landeskog for sixth on the franchise goal list with 250, and he passed Milan Hejduk for fifth on the franchise assist list with 431.
Avalanche: At Boston on Saturday night, the third game of a four-game trip.
Sabres: Host San Jose on Sunday night.
AP NHL: https://apnews.com/hub/nhl and https://twitter.com/AP-Sports
Copyright 2023 STATS LLC and Associated Press. Any commercial use or distribution without the express written consent of STATS LLC and Associated Press is strictly prohibited.