The Oilers opened the scoring with seven minutes to play in the first period when Warren Foegele put a shot on Flames goalie Jacob Markstrom, and Ryan was there to convert the rebound.
Edmonton made it 2-0 on the power play with 2 1/2 minutes left in the first. Puljujarvi’s shot went off a Calgary stick right to McDavid, who scored his first goal of the season.
McDavid got another power-play goal 5 1/2 minutes into the second, firing a one-timer from near the right faceoff dot.
Calgary scored its first midway through the second. Mangiapane was able to track down his own rebound in tight and score on a backhand.
The Flames made it 3-2 five minutes into the third with the man advantage. Matthew Tkachuk made a nice pass from behind the net to set up Lindholm.
But the Oilers regained their two-goal edge 26 seconds later. Cody Ceci sent Puljujarvi in alone and he made no mistake, putting his second of the season past Markstrom.
McDavid completed his hat trick with an empty-net goal.
NOTES: The Flames were without forward Blake Coleman, who was serving a suspension for boarding Winnipeg Jets forward Jansen Harkins on Oct. 6. ... Calgary dressed 11 forwards and seven defensemen. ... F Zack Kassian returned for the Oilers after hitting his head on the ice during a fight in a game against Vancouver on Oct. 7. ... The last time the Flames won a season opener was 2009 when Miikka Kiprusoff was in net. The previous NHL record for consecutive season-opening losses was seven. By comparison, the Vancouver/Memphis Grizzlies (NBA) and Cleveland Browns (NFL) have had the longest streaks of the sort of the four major North American sports, with 13 straight season-opening losses apiece.
Flames: Host Anaheim on Monday night.
Oilers: Host Anaheim on Tuesday night.
More AP NHL: https://apnews.com/hub/NHL and https://twitter.com/AP_Sports