Calgary had a season-high 51 shots and held Arizona to a season-low 14.
"They were desperate, faster, heavier in battle than us and played a better game than us," Arizona coach Andre Tourigny said.
Nick Schmaltz, Clayton Keller and Matias Maccelli scored, and Karel Vejmelka made 45 saves for the Coyotes (20-29-9), who were 5-0-4 in their previous nine games for their longest point streak since an 11-0-1 run in February 2012.
"I know we're capable of being a tough team to play against, we're capable of playing good hockey every night," Tourigny said. "If everybody will play their A-game, we can beat anybody, but the truth is, a B-night is not good enough for us."
Lindholm started the comeback, scoring on the power play to cut it to 3-2 at 12:58 of the second period.
"Even when we were down 3-1, and there's some nerves going on there, we knew sooner or later they're going to go in, with a lot of chances and a lot of shots," Lindholm said.
Toffoli tied it 3-3 at 14:00, with Lindholm getting an assist for his 500th point.
"Going into the League, you don't dream about certain numbers, you just want to play a couple games and ... time just flies," Lindholm said. "Obviously it's a number, but there's nothing more to it, really."