Duehr put Calgary ahead 2-1 at 10:15, finishing off a quick passing play from low in the right circle.
Thompson made it 2-2 at 14:28 with a wrist shot over the glove of Vladar on the power play. It was Thompson’s first of the season.
Coleman’s one-timer from the right circle on an odd-man rush gave Calgary a 3-2 lead at 1:52 of the third.
“I thought we were resilient,” Coleman said. “I think every time we grabbed some momentum, they seemed to grab it back and (we) just stuck with it. I thought we were the better team 5-on-5. A few too many penalties, but good kills and big saves from ‘Vladdy’ kept us there, and a couple of timely goals. I think we’ve been building the right way, and I think we deserved to finally get a road win.”
JJ Peterka tied it 3-3 at 3:14 when he twisted his body to get a wrist shot over the blocker of Vladar from the top of the right circle.
“You can’t change what happened in the past, you can only change what you’re going to do in the moment,” Johnson said. “I think for us as a team, to take that next step, you make the play that’s there and when the simple play is there, you make them. I think sometimes, we try to overcomplicate it. We have a lot of skill in this room, that will take over when the opportunity is there. But I think as a group, we have to recognize that that’s not always going to be the case."
"I think every game, we have been a better team," Ruzicka said. "We've just got to keep working on the little details in the game."
NOTES: Dahlin surpassed John Van Boxmeer (52) for the fourth-most multipoint games (53) and third-most multiassist games (36) by a Sabres defenseman. … Calgary scored four go-ahead goals, tied for second-most total in its history. The Flames hadn't scored that many since Nov. 18, 2013, against the Winnipeg Jets. … Johnson (35 years, 212 days) is the oldest defenseman since Craig Rivet on Dec. 21, 2010 (36 years, 99 days) to score for Buffalo.