CALGARY, Alberta -- Mikkel Boedker found himself at the right place at the right time and with the right amount of speed.
The deciding goal came on a breakaway at 6:48 of the third period with Phoenix clinging to a 3-2 lead.
During a frantic stretch of pressure in the Coyotes end, Boedker hopped off the bench just in time to pick up Ken Klee's clearing attempt.
The 19-year-old forward raced down the wing while fending off defenseman Adrian Aucoin, pulled the puck around goalie Miikka Kiprusoff and tucked in his eighth goal.
"Kenny made a nice play clearing the zone. My guy changed, and I was lucky I had pretty good speed off the bench," Boedker said.
Two of Calgary's five home losses have come against the Coyotes.
"It's a huge win, especially in this building where it's a tough one to come into," Boedker said. "It's good to be back in Canada and see the crowds in all the cities, it gets you a little extra fired up when there's so many people in the stands."
Calgary responded just over a minute later when Mike Cammalleri deflected Dion Phaneuf's slap shot past Ilya Bryzgalov for his second goal of the night.
However, Calgary could not net the tying goal despite finishing with a 32-26 edge in shots.
"Calgary is on a roll right now," Bryzgalov said. "It's very important points for us, especially to beat a team like that which is one of the top teams in the league. It's special for a young group of players."
David Hale, Peter Mueller, and Olli Jokinen also scored for Phoenix. The Coyotes have won four of five.
Matthew Lombardi also scored for the Flames, who lost in regulation for just the second time in 16 games.
"We had chances right until the end to tie it up. Unfortunately we couldn't get it done," Calgary captain Jarome Iginla said. "We weren't as sharp probably early as we should have been, and it cost us."
Phoenix restored its two-goal cushion at 3-1 at 17:52 of the second period on a goal Kiprusoff would want to have back. From the corner and behind the goal line, Jokinen flung the puck toward the net and the shot went in off Kiprusoff.
A key sequence in the game came early in the opening minutes of the second period.
Immediately after killing off a high-sticking penalty to Mueller, Phoenix broke in a 2-on-1 rush. Mueller ripped a shot past Kiprusoff.
"Everyone's a little upset right now," Cammalleri said. "It was a game where we obviously got behind but we all felt throughout the game that we could come back and get the win or at least a tie and make something happen in overtime."
Cammalleri leads the Flames with 19 goals, one more than the slumping Iginla, who has notched just two in his last 13 games - both in the same contest.
"Especially in games when it's a one-goal game that you lose, you definitely feel it more," Iginla said. "I've got to start creating a few more scoring chances and just keep working and try to get one."
Phoenix opened the scoring at 8:17 when Hale wristed a shot toward the net that slipped past the screen of Todd Fedoruk and through Kiprusoff's pads.
It was the second goal of the season for Hale, who in November scored his first to snap a NHL-record drought of 230 games without a goal to start a career.
Minutes later, Iginla and Hale dropped the gloves for a spirited fight. Iginla had gone 40 games without a fight after having two bouts in the first three games of the season.
"I probably got a little carried away," Iginla said of fighting his former teammate. "He caught me with a pretty good cross-check under the ribs. It was one that got me in the right spot and it hurt, so then I probably got a little too fired up."
Phoenix has won three of four in Calgary. ... Calgary RW Todd Bertuzzi (hip) missed his fourth game. ... Including playoffs, it was Iginla's 46th career fight. ... Phoenix improved to 9-2 when leading after the first period. ... Through 44 games, the Flames are seven points ahead of last season's pace.