Troy Brouwer had the last try, but Varlamov made the save.
Brian Elliott had 40 saves and Steen scored the only goal for St. Louis. The Blues had their three-game winning streak stopped.
It looked like the Blues would close out this one when the Avalanche struck late.
With Varlamov off for an extra skater, Colorado kept the play in the St. Louis zone for more than a minute. Matt Duchene found MacKinnon skating to the left circle and his one-timer beat Elliott. It was his 16th of the season.
Colorado had a power play for the final 1:58 of overtime but couldn't score.
It was a tight-checking game from the start, but St. Louis broke through late in the second period. Brouwer stole a clearing attempt by Carl Soderberg at the point and fed Steen coming down the right side. Steen's shot went through Varlamov and trickled into the net at 17:57. It was his 15th of the season.
The scoreboard clock stopped counting down just before Steen's goal. It stayed that way the rest of the second period and the public address announcer called out the time at regular intervals.
The clock was working again at the start of the third period.
Colorado thought it had the tying goal at 6:16 of the third when Soderberg jammed the puck through Elliott's legs, but referee Kelly Sutherland waved it off because the play was ruled dead.
NOTES: Avalanche RW Blake Comeau was a healthy scratch so he could be with his wife, who gave birth to the couple's second daughter earlier Friday. ... The Blues sent D Andre Benoit to the Chicago Wolves of the AHL. ... Colorado D Erik Johnson missed his ninth straight game with a lower-body injury. He is expected to play Saturday night in Dallas.