Josh Morrissey had a pair of assists.
Tyler Toffoli also scored for the Jets.
Connor Hellebuyck won his 33rd game of the season for Winnipeg, who moved to 46-24-6.
MacKenzie Weegar and Martin Pospisil socred for the Flames.
Dustin Wolf turned aside 40 shots for Calgary, who dropped to 34-36-5.
With Nikolaj Ehlers off for tripping, MacKenzie Weegar gave the Flames the lead 4:35 into the first period when Jonathan Huberdeau hit him in the high slot with a crisp pass that Weegar wristed past Hellebuyck, beating him low blocker side to make it 1-0 Calgary.
The goal was his 19th of the season.
Gabriel Valardi tied the game 12:59 into the first with a power play marker when he tapped a Kyle Connor feed past Wolf to make it 1-1 at the tail end of a two-man advantage.
The goal was his 17th of the season.
Nikolaj Ehlers put Winnipeg ahead at 14:56 when he one timed a Cole Perfetti feed past Wolf, beating him low glove side to make it 2-1 Jets.
The goal was his 23rd of the season.
Martin Pospisil tied it up 10:34 into the second on a shot from the point that Jet defenceman Neal Pionk redirected with his skate.
The goal was his 9th of the season.
Tyler Toffoli scored 15:35 into the second on the power play when Nikolaj Ehlers hit him with a cross slot pass which he fired on net and had it go in off a defenceman's skate.
The goal was his 31st of the season.
Martin Pospisil took a five minute major late in the second period for elbowing Josh Morrissey in the head.
The Jets failed to score on the ensuing power play.
Gabriel Valardi batted a puck past Wolf 8:44 into the third to give the Jets a two-goal lead.
Valardi added an empty netter with 1:04 remaining in regulation to seal the win for the Jets.
SHOTS-CALGARY 33 WINNIPEG 45
ATTENDANCE-14,055