Jerome Iginla attempted to bat the puck to a teammate as he exited the Flames' zone, but the puck bounced onto Keith Ballard's stick to start a 3-on-1 break. Ballard fed the puck to Doan, who wound up from the left faceoff circle and tucked the puck inside the far post. Oleg Saprykin and Steven Reinprecht also scored for the Coyotes, who won for the first time in three games against the Flames.
Alex Tanguay and Stephane Yelle scored for the Flames, who have lost seven straight on the road - and seven of nine overall.
Reinprecht tied it at 2-2 with 4:50 remaining when he tipped a Nick Boynton shot from the blue-line past Miikka Kiprusoff's right arm.
Yelle broke a 1-1 tie with 11:46 remaining when he redirected Robyn Regehr's blast from the left point past Mikael Tellqvist for his second goal in three games.
Tellqvist stopped a breakaway attempt by Tanguay minutes earlier, his second save on a Calgary breakaway in the game.
Tanguay gave Calgary a 1-0 lead at 14:56 of the first period when he took a pass from Tony Amonte on the left edge of the crease and scored into the open left side of the net.
The Coyotes tied it late in the second period in bizarre fashion. Saprykin, standing on the goal-line along the near boards, fired the puck at the crease. The puck deflected off Kiprusoff's right shoulder and into the net, where it became lodged behind the upper support bar at the back of the net.
Players searched for an additional couple of seconds before the referee blew the play dead with 2:11 left in the period. The puck only was located after fans sitting behind the Calgary goal repeatedly shouted its location.
Saprykin wasn't awarded his 14th goal until after a four-minute video review, which also saw two seconds added back onto the clock.
Notes: The Coyotes lost forward Fredrik Sjostrom to a knee sprain when he was tripped by Roman Hamrlik with 5:16 left in the second period. ... Phoenix hasn't scored a power-play goal in five games. ... The Coyotes were without defenceman Ed Jovanovski, who took a puck to the collarbone in the third period of Phoenix's 4-1 loss Monday in Nashville. Jovanovski is listed as day-to-day. ... The Flames and Coyotes will play again Monday in Calgary, concluding a stretch in which Calgary plays five games against just two teams. The Flames just completed a three-game series against Colorado, going 1-2 against the Avalanche.