Matthew Tkachuk scored two goals, and then had the only goal for Calgary in the shootout.
Mark Giordano scored for the Flames (25-16-8), who lost their fourth straight game but extended their point streak to 11 (7-0-4). Mikael Backlund had two assists, and David Rittich made 34 saves.
"It's so disappointing. It's just like the snowball effect of the second period, it's like they have nothing and then we give them a little bit of life and they're a good team," Tkachuk said. "Their record doesn't show it, but they are. They've got some high-end players that when they're feeling confident they can take over games."
Tkachuk scored at 1:32 of the first period to give Calgary a 1-0 lead on its first shot of the game.
Giordano scored at 14:21 on a long point shot through traffic for a 2-0 lead.
"I thought we played good through 30 minutes, being up 2-0, but the first goal they got, that gave them a little bit of a spark and we fed them a little bit at the end," Flames coach Glen Guluztan said. "We talked about not going east-west here tonight and we fed them a little bit, then they got their second and they got some momentum. Then the building came alive and I think in the first 30 it wasn't."