Steen's score came 5:55 into the second period, but the Blues had to fight off a Calgary comeback that included a brief two-man advantage late in the third period.
St. Louis won its second straight game while reaching 10 victories and 50 goals for the season.
The first Calgary goal came from Tim Jackman 4:41 into the third and the Flames drew within one when Mike Cammalleri scored with 5:11 remaining.
The win went to Brian Elliott, who made 18 saves. Reto Berra stopped 24-of-27 shots, but the Flames have lost two in a row and four of their last five.