Barret Jackman scored midway through the third period to extend the game after rookies T.J. Oshie and Patrik Berglund scored tying goals in the second for the Blues.
Detroit's Kirk Maltby scored early in the second and Hossa had two goals later in the period for the defending Stanley Cup champions. Chris Osgood made 31 saves.
St. Louis' Chris Mason had to stop just 13 shots in regulation and overtime after replacing Manny Legace early in the second period. Legace gave up three goals on just eight shots.
Detroit failed to keep three leads in regulation, but made up for it in the shootout when Jiri Hudler and Hossa scored and Osgood
Avalanche 4. Flames 3.
Marek Svatos scored twice, Peter Budaj stopped 36 shots and the Colorado Avalanche ended a four-game slide.
Milan Hejduk and Ruslan Salei also scored for the Avalanche, who are 2-5 during a season-high eight-game homestand. It was the first multigoal game of the season for Svatos, who also had an assist. Ryan Smyth and Tyler Arnason each added two assists.
Rene Bourque, Adrian Aucoin and Jarome Iginla scored for the Flames, whose three-game winning streak ended.
The Avalanche improved to 17-0-0 when taking a lead into the third period as Budaj preserved the win with numerous stops, including turning back two straight slap shots by Dion Phaneuf late in the game.
Kunitz scored on a power play early in the period and Perry gave the Ducks a two-goal lead on another man-advantage midway through the third. Chris Pronger also scored for Anaheim.
Buffalo pulled within one when defenseman Craig Rivet scored with 6:33 remaining, but Anaheim's defense and goalie Jonas Hiller shut the Sabres out the rest of the way.
Hiller, making his fourth consecutive start in place of Jean-Sebastien Giguere, had 21 saves to win for the third time in that stretch. He's also started six of the past seven and is 4-2 in those games.