Nathan MacKinnon also had a goal and Philipp Grubauer stopped 27 shots for Colorado. The Avalanche have won four in a row and are 12-0-2 over their last 14 games.
Colorado plays 14 of its last 19 games on the road.
''We're in a fight, a race to try and get home ice and put ourselves in the best possible position we can for the playoffs and our guys are taking it to heart,'' coach Jared Bednar said. ''They're coming out every night with the right mindset and attitude and desire to win the hockey game. I expect that to continue down the stretch.''
Ryan O'Reilly scored for St. Louis and Ville Husso had 32 saves. The Blues have dropped five straight (0-4-1).
The game appeared headed to overtime when O'Reilly's clearing attempt was intercepted by Makar at the blueline. Makar's shot from the right point went through traffic and by Husso.
''I thought it went off of us, I don't think it went straight in,'' Makar said. ''It looked like it pinballed off quite a few things. I just tried to throw it at the net.''
St. Louis pulled Husso for an extra skater but couldn't get a shot on goal.
''I just trusted myself to hold on and make a strong play. I just throw it away,'' O'Reilly said of the winning goal. ''It's not a good play. It was just really, really stupid, which you can't afford to do. I cost us one, maybe two points that we're in desperate need of. I wish I could have it back but have to be a lot better going forward.''
MacKinnon gave Colorado a 1-0 lead with his 13th goal at 11:27 of the first period. It was MacKinnon's 203rd career goal, moving him past Peter Forsberg into third place in franchise history since the team moved to Denver in 1995.
O'Reilly tied it up late in the first when he knocked in the puck in a mad scramble in front of the Avalanche net at 18:04. It was his 13th of the season.
The Blues are 2-7-1 in their last 10 games and have fallen into fifth place in the West, a point behind Arizona for the last playoff spot.
''We look at these games going back to the (Minnesota) game and we're playing good hockey, solid hockey and we're coming out on the losing end,'' coach Craig Berube said. ''We've got to find a way to get more pucks on the net. On the other side of things when you keep playing the way you're playing, you're doing a lot of good things, things will turn. You've got to stay mentally strong.''
A St. Louis power play expired and Avalanche defenseman Devon Toews came out of the penalty box as the puck was headed into the Blues zone. As Toews raced to get it for a breakaway chance Husso took a risk and went after it. He reached the puck before Toews and cleared it out of the zone and out of harm's way.
Things heated up in the second period after St. Louis forward Jaden Schwartz was given a goaltender interference penalty. During the stoppage Colorado's Liam O'Brien and the Blues' Robert Bortuzzo dropped the gloves for a spirited fight. There was no clear winner and both were given 5-minute majors.
Avalanche forward Brandon Saad went down in front of the St. Louis net after getting hit in the leg with a shot from the point midway through the second period. Saad jumped as the shot came to the net but it caught him flush. He had to be helped to the locker room but returned to the bench later in the period.
Blues: Host Vegas on Monday night.
Avalanche: At Minnesota on Monday night.
Copyright 2021 STATS LLC and Associated Press. Any commercial use or distribution without the express written consent of STATS LLC and Associated Press is strictly prohibited.