"Big win," MacKinnon said. "Scoring seven against a good defensive team is obviously something that's not going to happen again, but it's a good game by everybody, really solid. It's nice to finally get a win."
Nazem Kadri scored two goals, and Samuel Girard had four assists for the Avalanche (24-13-4), who won for the first time in four games (1-2-1). Philipp Grubauer, who made 24 saves, had gone 0-4-1 since a 3-1 win against the Toronto Maple Leafs on Dec. 4.
WATCH: [All Blues vs. Avalanche highlights]
Robert Thomas scored two goals for the Blues (26-10-6), who have lost two in a row following an eight-game winning streak.
"We didn't play a very smart game tonight, that's the bottom line," St. Louis coach Craig Berube said. "You have to play good defense against this team and manage things, and we didn't do it. We didn't do it good enough."
Jordan Binnington allowed seven goals on 41 shots before he was replaced by Jake Allen with 5:41 remaining. Allen made one save.