The Flames snapped a two-game losing streak and won for the sixth time in eight games. Calgary picked up two points to climb within a point of Dallas, Minnesota and San Jose for fifth in the Western Conference.
St. Louis has dropped two in a row and four out of five overall. Lee Stempniak scored twice for the Blues. Christian Backman and Petr Cajanek also scored for St. Louis, while Brad Boyes had three assists.
Jason Bacashihua made 30 saves in a losing effort.