Fowler scored the winner at 4:41 of a back-and-forth extra period, cutting in on Flames goaltender Miikka Kiprusoff to bury his seventh goal of the season.
Teemu Selanne, who tied the game at 4 on the power play with under 3 minutes to go in regulation, added a goal and three assists for the Ducks.
The Ducks won their fifth straight road game to move into a tie with San Jose for fifth place in the Western Conference. Calgary remains in eighth, one up on the Minnesota Wild.
Selanne's tying goal came with Glencross in the penalty box for hooking Corey Perry, the Flames' first penalty of the night.
Calgary's Brendan Morrison lost the faceoff deep in the Flames' end and then lost track of Selanne in the slot, who one-timed Ryan Getzlaf's centering pass behind Kiprusoff.
Calgary entered the third period trailing 3-2 but Iginla tied it at 5:33.
Bourque's shot was stopped but Ducks defenseman Lubomir Visnovsky shattered his stick attempting to clear the rebound and Iginla fired in the loose puck for his team-leading 23rd goal.
After falling behind 2-1 earlier in the second on goals 41 seconds apart from Bourque and Jokinen, Anaheim regained the lead midway in the period on goals 2:38 apart.
Koivu had an empty net to fire home his second of the night at 7:34. Kiprusoff stopped Koivu's initial shot but positioned outside of his crease, he was run over by Jason Blake cutting through the slot.
Anaheim surged in front 3-2 on a pretty short-handed goal from 20-year-old rookie McMillan.
Streaking down the ice on a 2-on-1, McMillan kept the puck himself and snapped a shot past Kiprusoff's glove for his seventh goal.
Although Jonas Hiller (fatigue) was activated from injured reserve on Friday, McElhinney made his third start in a row and looked good early against his former club, turning aside all nine shots he faced as Anaheim took a 1-0 lead after one period.
McElhinney, who finished with 21 stops, is 6-5-1 on the season. In parts of three seasons with the Flames, he won just four times in 29 appearances.
Kiprusoff made 25 saves for the Flames.
Notes: Calgary LW Alex Tanguay (neck) missed his second game ... Selanne's three assists gives him 690 in his career, moving him past Maurice Richard and into 53rd on the NHL's all-time list ... Calgary D Cory Sarich played in career game No. 800 ... Anaheim D Francois Beauchemin was in the lineup for the first time since Wednesday's trade with Toronto. Beauchemin spent four seasons with the Ducks before signing with Toronto as a free agent in July 2009. ... The Flames play in Vancouver against the Northwest Division-leading Canucks on Saturday night.