Calgary remains one point behind the Los Angeles Kings for the second wild card into the Stanley Cup Playoffs from the Western Conference. The Kings have played two fewer games.
"It's frustrating," Johnson said. "We obviously know what we can do when we play well, and what happens when we don't play well is obvious here too. We're either really good or really bad. There's no middle right now."
Hanzal put Arizona up 1-0 at 6:45 of the first period. After winning the faceoff in Calgary's end, he tipped a shot by Radim Vrbata past Johnson.
Smith, who has two shutouts this season and 32 in his NHL career, made 19 saves in the first period.
"He's been phenomenal this year, and you're definitely very confident with him in the net," Dvorak said.
Dvorak made it 2-0 at 2:38 of the second period, and Martinook shot by Johnson to extend the lead to 3-0 after White's dump-in took a fortuitous bounce off the end boards.
White scored at 11:08 to push the Coyotes lead to 4-0. Defenseman Luke Schenn lost control of the puck when trying to deke Johnson, but it deflected off White's skate before crossing the goal line.
Dvorak scored his fourth goal in the past three games to make it 5-0 2:12 into the third period when his cross-crease pass deflected off Flames defenseman TJ Brodie and past Elliott, who entered in relief of Johnson to start the period.