"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.
Video: STL@COL: Kadri buries rebound from sharp angle
MacKinnon scored on a breakaway to give the Avalanche a 1-0 lead with 11 seconds left in the first period.
"They play so tight, and the only way to get them to loosen up a little is to get a lead," MacKinnon said. "Good play, good pressure. I just poked at it and got a breakaway. It was good that I finally buried a breakaway."
After Binnington made the save on Girard's point shot, Kadri put in the rebound off the goalie from along the goal line to give Colorado a 2-0 lead at 6:56 of the second.
The Avalanche increased the lead to 3-0 at 7:40 when Mikko Rantanen took a return cross-ice pass from Cale Makar on a 5-on-3 power play and scored from the right face-off circle.
Video: STL@COL: Rantanen one-times Makar feed for PPG
The Blues closed to 3-1 at 13:42 when Thomas scored on a wraparound.
St. Louis made it 3-2 at 13:42 on Alex Pietrangelo's power-play goal. Ryan O'Reilly won a face-off in the left circle, and Pietrangelo scored from the point.
"We felt like we had some momentum there," Pietrangelo said. "Just seemed like we couldn't grab the momentum when we thought we had some."
Video: STL@COL: Pietrangelo strikes quickly on power play
Makar made it 4-2 with 16 seconds left in the period on a power-play goal. He shot off the right post from above the circles after a pass from Andre Burakovsky.
"To get that goal, to kind of calm things down and give us a two-goal lead back into the third was huge," Colorado coach Jared Bednar said.
Kadri scored his second of the night with a one-timer from the right circle off a Girard pass to give the Avalanche a 5-2 lead at 6:56 of the third.
J.T. Compher tapped in the rebound of Gabriel Landeskog's shot on the power play to make it 6-2 at 12:05.
Colorado went 3-for-5 on the power play.
"Aggressive mentality, and obviously it's been a struggle, but we finally broke out and some guys made some really good plays," MacKinnon said.
Video: STL@COL: Kadri one-times home second goal
Joonas Donskoi scored with a shot from the point off a MacKinnon pass to put the Avalanche ahead 7-2 at 14:19, after which Allen replaced Binnington.
"Enough goals," Berube said.
Thomas scored off a turnover at 16:14 to make it 7-3.
The Avalanche squandered a lead in the third period in each of their previous four losses.
"I think we were just due, honestly," MacKinnon said. "We were giving all the opponents their goals in the third with bad breakdowns. Something just felt kind of different tonight when they made it 3-2. There was no panic, and Cale had a big goal, and that kind of iced it. We knew we needed some maturity from everybody at that time."
Video: STL@COL: Donskoi hammers feed from MacKinnon
They said it
"They're a good team with a lot of good pieces. They played hard tonight and they were better than us. I think we're the better team, and we've got them again and looking forward to that game." -- Blues center Ryan O'Reilly
"That's a really good team, so huge points. We didn't do so well the last couple games against them (3-1 and 5-2 losses). It was a good statement game for us. We need to keep collecting points and playing the right way. You miss a point here and there, it's going to cost you in the end." -- Avalanche goalie Philipp Grubauer
Video: STL@COL: Makar wrists home power-play goal
Need to know
MacKinnon has 18 points (seven goals, 11 assists) in the past 13 games. ... Girard has six assists in the past two games. ... Landeskog has seven points (four goals, three assists) in the past eight games. ... Binnington won his previous six starts since a 5-2 loss to Toronto on Dec. 7. ... The Blues won the previous six games against the Avalanche and are 15-3-3 in the past 21 games against them.
Blues: At the Vegas Golden Knights on Saturday (4 p.m. ET; NHLN, SN, ATTSN-RM, FS-MW, NHL.TV)
Avalanche: At the New Jersey Devils on Saturday (7 p.m. ET; MSG, ALT2, NHL.TV)
Video: MacKinnon has four points, leads Avalanche past Blues