St. Louis was poised to get a key Central Division win before Colorado rallied. The Avalanche pulled goalie Semyon Varlamov for an extra skater with 2:10 left and MacKinnon scored at 18:31 with a sharp-angle shot that went off Allen.
It was his 14th of the season.
Varlamov had 35 saves.
Colorado took a 1-0 lead on Duchene's 19th goal of the season just 4:48 into the game. St. Louis responded with three goals in a span of 4:08.
Tarasenko tied it at 16:24 of the first when he muscled past defenceman Francois Beauchemin and lifted the puck over Varlamov's right shoulder for his 24th of the season.
Backes gave the Blues a 2-1 lead on the power play when he scored his 11th at 19:02. Berglund made it 3-1 just 50 seconds into the second period when he scored an unassisted goal. It was his first of the year.
Grigorenko got Colorado within one at 6:32 when he skated through the slot and roofed a shot past Allen for his second of the season.
Duchene was playing his first game since being named to the NHL All-Star Game. It is his second All-Star honour and first since 2011, his second year in the league.
NOTES: Johnson is expected to miss between five and 12 days with his injury. He was hurt in the second period of Monday's win over the Kings. ... Blues C Kyle Brodziak returned to the lineup after missing the last game due to fatigue. He had missed five games with a cut on his leg from a skate.