Andrew Mangiapane also tallied for the Flames, collecting his 12th goal of the campaign.
Jacob Markstrom, playing his 300th game, made 25 stops in the loss while Jack Campbell turned aside 26 Calgary shots.
The win improved the Leafs to a division-leading 26-10-3, while the Flames are now 16-21-3.
The Flames pushed hard in the final frame but the Leafs scored three goals - and the final two - to break a tie en route to the win.
Rasmus Andersson got things going early for the homeside, unloading his cannon of a shot from the point, Campbell making the stop and then Joakim Nordstrom - who scored his first as a Flame Sunday - getting the rebound but unable to put it over Campbell's outstretched pad.
Sam Bennett came close to open the scoring - as in half-a-puck-width close - when his shot squeaked between Campbell's legs, but Leafs blueliner Travis Dermott reached behind his 'tender and dug the puck off the line, leading to a mad scramble with Campbell eventually laying on the biscuit to bring a whistle.
The Flames outshot the Leafs 10-6 in the first, had a 7-3 advantage in scoring chances and a 3-1 edge in high-danger scoring chances.
Jason Spezza opened the scoring in the game 2:10 into the second period, banging home a loose puck past Markstrom to put the visitors up 1-0.
The Flames had a few chances before Auston Matthews doubled the Toronto lead at 7:53, taking a pass from William Nylander off the rush and circling into the middle, shooting around Calgary d-man Michael Stone and putting the puck high blocker side.
It was his league-leading 26th marker of the season.
Milan Lucic dumped former Flame TJ Brodie deep in the Leafs zone to create a turnover and set the stage for Calgary's first tally.
Mangiapane gathered the puck and passed it up to Elias Lindholm at the point, who fed it down to Noah Hanifin who had pinched in along the boards. His shot attempt went off Brodie's stick as he battled in front with Lucic, going right to Mangiapane who had circled into the slot, his quick wrister beating Campbell five-hole at 18:06.