Torres put Phoenix ahead 5:59 remaining in the period as he got behind the Flames' defense on a 2-on-2, was threaded a pass by Matthew Lombardi, and tucked a backhand behind MacDonald.
Iginla tied the score at 2-all with 3:34 to go, sliding a harmless-looking backhander toward the net and the puck slipped through Smith's pads.
Cammalleri put the Flames ahead with 35 seconds left in the period. He took a centering pass from Glencross and fired a shot into the top corner of the net.
"The second period was definitely a bit different. A couple of weird penalties and just not a lot of flow to the game, everybody was a little riled up," Stempniak said. "We came in, took a deep breath, and tried to channel that frustration and energy into the game and stuck with it. It was a great win for us and a testament to our mental toughness."
After getting blanked on 30 shots by Smith last Tuesday, the Flames scored on the their first shot in this game.
Chris Butler's shot didn't make it through a crowd in front but Jackman collected it and, as he cruised by the net, he shovelled a backhand under Smith's arm. It was Jackman first goal and point in 52 games dating back to Dec. 29, 2011.
NOTES: Calgary RW Akim Aliu (lower body) was injured in his season debut Saturday and was replaced in the lineup by Roman Cervenka. ... Calgary LW Steve Begin played in his 500th career game. ... Iginla's two points give him 1,086 for his career, moving him within two points of Theo Fleury for 59th on the NHL's career list.