Gabriel Vilardi scored his first goal of the season and also had an assist for the Jets (6-2-0), who were coming off a 3-0 loss to the Seattle Kraken on Thursday but have won six of seven. Mark Scheifele had two assists, and Eric Comrie made 30 saves.
Blake Coleman and Mikael Backlund each had a goal and an assist, and Nazem Kadri also scored for the Flames (1-7-1), who have been outscored 31-12 during their losing streak. Dustin Wolf made 27 saves.
Kadri gave the Flames a 1-0 lead at 5:18 of the first period, scoring on the power play with a one-timer from the right circle.
Kyle Connor tied it 1-1 at 5:19 of the second period while the teams were skating at 4-on-4. Morrissey made a move around MacKenzie Weegar in the neutral zone, allowing him to skate in on a 2-on-1 and pass to Connor, who scored with a one-timer from the right circle.
Jonathan Toews put the Jets ahead 2-1 at 6:24. He won a face-off back to Morrissey, who carried it down to the goal line before sending a centering pass to the top of the crease, where Toews redirected it into the net.
Calgary challenged the play for goaltender interference, but the goal was upheld following a video review.
Vilardi pushed it to 3-1 at 9:50, scoring a power-play goal with a quick backhand from below the left circle. It was his first goal in eight games this season after he scored 27 in 71 games last season.
Backlund cut it to 3-2 at 13:56. Coleman spun to deliver a short backhand pass to Backlund, who finished a mini breakaway with a backhand-to-forehand deke.
Alex Iafallo responded with another power-play goal to make it 4-2 at 18:50. Vilardi caught a pass along the goal line, spun and sent a backhand feed to Iafallo for a one-timer in the low slot.
Coleman got the Flames to within 4-3 at 8:27 of the third period. He scored from all alone in front off a centering pass from Backlund, who was along side boards.
The Flames had a chance to tie it late after Haydn Fleury was assessed a minor penalty for cross-checking at 17:10, but they failed to convert on the power play, and Vladislav Namestnikov scored into an empty net with eight seconds left for the 5-3 final.