Pierre Engvall had a goal and an assist, and Auston Matthews scored for the fifth time in five games for the Maple Leafs (24-15-5), who are 9-1-1 in their past 11 games.
"We gave [McDavid]) way too much space," Matthews said. "He's the most dangerous player in the world for a reason, so when you just let him fly through the neutral zone with the speed and skill he has, he's going to make us pay."
Frederik Andersen allowed three goals on 19 shots before being replaced at 1:45 of the second by Michael Hutchinson, who made 13 saves on 16 shots.
Coach Sheldon Keefe said he pulled Andersen because he was not satisfied with the Maple Leafs' defensive play in front of him.
"Before I [made the decision to pull] him, I told our team I'm not going to let Freddie play behind that, that's not fair to him," Keefe said. "To that point, it felt like he already had a full game worth of work. Obviously, we didn't get their attention in the first intermission like we thought we would have or thought we did. It didn't translate to the ice, so I had to do something such as that to get our team's attention and to save Freddie from what was happening. I had no issue with anything he was doing in the net."
Oscar Klefbom put the Oilers up 1-0 at 7:51 of the first period when his shot from the point beat Andersen through a screen.
Darnell Nurse made it 2-0 34 seconds into the second period when he took a pass from McDavid and shot past Andersen's glove from the top of the left face-off circle.
Kailer Yamamoto one-timed a pass from Caleb Jones at the bottom of the left circle to make it 3-0 at 1:45 to chase Andersen.