Elliott worked a cycle up high with Anthony Duclair before shooting. Hanzal was originally credited with the goal, but replays showed the puck deflected off Flames defenseman Kris Russell and not Hanzal.
Hanzal also served as an impactful net-front presence on Oliver Ekman-Larsson's goal. This after missing the previous seven games and 11 of the past 12 with a lower-body injury.
''He's a big body out there. You don't realize how much you miss him until he comes back,'' Coyotes coach Dave Tippett said. ''He solidifies our center ice. It's certainly good to have him back.''
Louis Domingue made his fifth straight start and made 25 saves for Arizona. The Coyotes picked up five of a possible six points on their three-game Western Canada trip.
Arizona improved to 6-1-2 in its last nine and is second in the Pacific Division at 20-16-4. The Coyotes are 9-1-2 against Pacific opponents.
''It's going to come to divisional games because that's really huge,'' Hanzal said. ''It's really tight. If we keep winning against Pacific Division teams we might get in.''
Johnny Gaudreau scored his team-leading 18th goal in the first period for Calgary. The Flames lost at home for just the third time in 15 games.
''Very disappointed because those are the games where you need to compete, to win battles, to keep competing and we didn't have everyone tonight,'' Flames coach Bob Hartley said. ''You can't win when you have five or six forwards going. It's sad but we were just not good enough.''
Rookie Domingue has gotten regular action with Mike Smith injured and played well. He entered the night with a .926 save percentage and improved to 5-2-2 this season.
His best stop came in the third period when he denied Mikael Backlund on a 2-on-1 rush with Gaudreau.
''His demeanor in practice and in games is the same. He just goes out there and plays and he's playing very well,'' Tippett said of Domingue.
Karri Ramo made his 11th straight start and stopped 31 shots for Calgary. He entered the night with a .936 save percentage over his previous 10 outings.
Ramo's best save came in the second. First, he jabbed out his right pad to rob Max Domi from the side of the net. Later, he scrambled across the crease to get his glove on a dangerous shot from Duclair.
''Whenever you score only one goal and (Ramo) makes over 30 saves, you feel like you let your goalie down,'' Flames center Matt Stajan said. ''That was a big game for us and we know that. We needed more energy than we had. No excuses.''
Calgary struck first when its 30th-ranked power play connected for a rare goal at 14:37 of the first period. Sean Monahan slid a pass to Gaudreau at the faceoff dot, and he fired a rising shot over Domingue.
Calgary's penalty kill is also ranked last and allowed a power-play goal with 1:49 left in the first. Ekman-Larsson's shot from the blue line pinged through traffic and eluded Ramo.
NOTES: The Flames went 22-6-1 against the Pacific last year. This season, they're 4-7-1. ... Calgary D Deryk Engelland got back in the lineup after being scratched the previous two games. ... Arizona D Zbynek Michalek (upper body) missed his second game. ... Arizona improves to 4-11-0 in games in which it outshoots its opponent. ... Arizona returns home Saturday night to start a seven-game homestand against Nashville.