Jarome Iginla had a goal and an assist while Curtis Glencross and Mike Cammalleri both lit the lamp for the Flames, who had dropped their previous four. Miikka Kiprusoff turned aside 29 shots in the win.
A three-goal blitz late in the first saw the Flames take control of the game.
The opener came at the 14:09 mark as good cycling saw Cammalleri finish off the play with a one-timer from the right circle for his 15th of the year.
Less than two minutes later, Glencross scored his 20th of the season when he caught up to the puck in the Phoenix end and from a sharp angle at the left side snuck it past Smith.
Jokinen's 20th of the season came with 2:37 to play when both a Calgary defender and Smith misplayed the puck down low and Jokinen took advantage for the easy score.
Phoenix, though, answered on the power play just 1:27 into the second when Keith Yandle's one-timer from the right point was tipped in by Torres.
It was a 3-2 game just over two minutes later when Rozsival shot in a bouncing puck from the inside right circle for his first of the season.
Calgary, though, clamped down from there and Iginla's empty-netter in the final minute sealed the win.
Phoenix, which had won seven straight at home, hosts Columbus on Saturday...Calgary plays in Anaheim on Friday...Phoenix had won the previous six against Calgary, including two this season.