Calgary's powerplay went 0-4, while the visitors were 1-3, including the pivotal game-winner in the third period.
Elias Lindholm scored his seventh of the season for the Flames, while Jacob Markstrom made 17 saves.
They are now 10-10-3 on the season.
The game marked the return of Sean Monahan to the Scotiabank Saddledome after being dealt to Montreal in the summer.
Monahan won the opening faceoff and not long after, chipped a puck towards the Calgary net and chased it in alone looking for a breakaway, Markstrom sliding way out on his side to foil the chance by getting to the biscuit first but it bounced off him, Juraj Slafkovsky then grabbing it and firing it into the open net just 13 seconds in as as Rasmus Andersson scrambled between the pipes to try and block it.
Calgary got a great look to tie it up a few minutes later, Nikita Zadorov skating down main street and then dishing to Nazem Kadri, but Allen stopped his low one-timer attempt.
Monahan got a loud and lengthy standing ovation from the crowd during the first TV timeout following a tribute video for the forward, who played 656 games for the team after being drafted sixth overall in 2013.
The Flames got the first powerplay of the night and got the puck moving, Jonathan Huberdeau setting up shop just behind the goalline and feeding Lindholm for a one-timer in the slot but it was also denied by Allen.
Markstrom made a huge stop of his own on a one-timer late in the first period, coming across to make a left-pad stop on the shot of Evgenii Dadonov, who fired it from one knee off a pass from Kaiden Guhle.
Blake Coleman had a golden chance to knot it up before the intermission when he was sprung on a breakaway by an incredible pass from Noah Hanifin and threw a fake couldn't beat Allen.
The Flames controlled much of the opening 20 and led 12-6 in shots at the break.