Michael Stone and Matthew Tkachuk scored for Calgary, while Jacob Markstrom made 23 saves.
The Flames fell to 16-19-3, while the Oilers are now 23-14-1.
Mikael Backlund missed the game and was listed as day-to-day, with Chris Tanev wearing the 'A' in his absence.
Juuso Valimaki and Dillon Dube both drew back into the lineup for the Flames.
The Oilers came out with a hard press, generating early chances. Leon Draisaitl - second to McDavid in the NHL scoring race with 54 points - had a lovely opportunity in tight after a turnover but fired it just wide with Markstrom in good position.
Johnny Gaudreau charged up and caused a turnover at the Calgary blueline, poking the puck past Oilers defenceman Tyson Barrie and skating in on a partial breakaway, trying to go five-hole but former Flame Mike Smith slammed his pads shut.
Barrie - who got tied up with Brett Ritchie on the backcheck - went crashing into Smith after the save, the pair ending up along the end boards after the collision.
A prolonged Oilers possession in the Flames zone led to Rasmus Andersson being whistled for a hold on McDavid with 9:30 to play in the first period. On the man-up, the Oilers captain fed the puck to Draisaitl who redirected a shot in the slot near the blue paint on a Grade-A chance but Markstrom made a big stop.
Calgary's impressive PK killed it off, limiting the chances from Edmonton's fifth-ranked powerplay, which came into the game clipping along at 25.9%.
Stone then opened the scoring when he unloaded a howitzer of a slapshot from the middle of the ice up by the blueline, the puck beating a screened Smith who had Milan Lucic battling for space in front of him.
The big man got an assist on the tally that came at 12:23, as did Andrew Mangiapane, who battled hard to get a puck up to Stone.