The Oilers (16-12-2) have won three games in a row and six of seven. They are 7-2-1 under coach Ken Hitchcock and have won five straight at home.
"First of all, Calgary is a really good team. The tempo they play at, it puts a lot of pressure on you," Hitchcock said. "I just thought we did a really good job in the first and third period. We got away with a little bit in the second, we got caught on the stretch game. I like how we stayed with it when we got an early lead, we didn't try to flex out. We got quality chances in the first period from playing the right way."
WATCH: [All Flames vs. Oilers highlights]
David Rittich made 29 saves for the Flames (19-10-2), who lost for the first time in six games. Calgary is 9-2-1 in its past 12 games.
"It's always the worse kind of loss, a 1-0 game," Rittich said. "We didn't play our game. We just need to be better than that. We made a mistake on that goal, going two guys on one. [McDavid] was there alone. We had a talk about it, and next time we will be better."
McDavid scored at 12:18 of the first period off a cross-ice pass from Alex Chiasson to give Edmonton a 1-0 lead.
"I thought we did a good job," said McDavid, who also scored the game-winning goal in a 7-2 victory against the Minnesota Wild on Friday. "We kept our emotions in check, played a hard game, and didn't cross the line ever, and I thought it was good."
Edmonton outshot Calgary 16-10 in the first period.
Rittich kept the Flames within a goal early in the second by making the save against Ryan Nugent-Hopkins on a breakaway 42 seconds into the period.
"I thought we played well in the second and stayed out of the box, and then in the third, we took three [penalties] and taxed some guys," Calgary coach Bill Peters said. "It's hard to mount a push when you are on the kill."