It was a challenging outing for the Flames, who were whistled for seven penalties - including five straight through the second and into the third - but had put themselves in a good position as time wound down in the tilt.
The Flames converted on two powerplays of their own in the contest and got yet another short-handed marker, their third in as many games, as special teams continued to be the wind in their sails.
Sam Bennett had a pair of goals to pace the Flames, while Cam Talbot was stellar yet again, making 57 saves in the contest, as Calgary was outshot 62-40 in the game.
Matthew Tkachuk missed his second straight outing, while the Stars said Ben Bishop was unfit to play, with Anton Khudobin starting in the Dallas pipes. It was his third outing of the series, also playing Games 1 and 3.
The Stars had come out with purpose and controlled the game early in both of the last two tilts.
The Flames said they'd flip the script on that - and they did.
They recorded the first five shots of the game, hemmed the Stars in their zone early, while Dallas iced the puck a few times in the opening minutes.
The Flames impressive PK was called upon early when Bennett was whistled for interference right off a face-off in the Stars zone at the 2:52 mark.
Stars sniper Alexander Radulov missed a wide-open net in Game 3 when a rebound came right to his stick off a Tyler Seguin shot and he fired it wide.
Fast forward a few days and he had a terrible case of deja vu, getting a rebound in nearly the same spot with Talbot out of place and an open cage - Derek Forbort rushing between the pipes to play goal - but Radulov again unable to get the handle and firing it wide.
The Flames got their first powerplay exactly three minutes later, Mattias Janmark slashing Dillon Dube on the gloves.
The Flames had a few chances but no great shots on Khudobin. The most dangerous scoring chance came courtesy of Jason Dickinson, who danced up the ice short-handed and finished his rush with a one-handed diving attempt to poke the puck past Talbot, who made a huge stop.
Right after the man-up chance expired, Esa Lindell kept up the Stars recent penchant for ringing the iron, putting one off the post through traffic, Talbot able to smother the rebound amid a goal-mouth pile-up.
The march to the box continued when Jamie Benn was sent off for slashing Dube near the midway point of the frame, Milan Lucic taking exception to the hard smack on his linemates arm, skating to the Stars captain and having words.
On the second Flames PP, they struggled to get setup in the zone and weren't able to get it on the rails.
Sean Monahan later took a great feed from Johnny Gaudreau while five-on-five and one-timed a shot in the slot off a rush looking for five-hole but was denied by Khudobin.
Elias Lindholm was then sent off for cross-checking with two minutes left in the first, the Stars wasting little time finding the first goal of the game - 11 seconds, to be exact.
Klingberg wristed a shot from the point into heavy traffic, with Pavelski finding the rebound and firing it home.
It was the first time the Stars scored the opening goal in their last 12 games.
The middle stanza had a wild start.
After going 0-2 on the PP in the first - and 0-for on their last four cracks - the Flames got an early chance in the second and made good.
Gaudreau got his first of the series - and third of the post-season at 1:54.
A shot by Lindholm off the half-boards led to a free-for-all around the net, Bennett and Monahan each getting cracks at the puck before Gaudreau - parked to the side of the left post - put a backhand in.