Josh Archibald, Sam Gagner, Kailer Yamamoto and Joakim Nygard also scored for the Oilers (26-18-5) who have gone 6-1-1 in their last eight games.
Taylor Hall, Christian Dvorak and Oliver Ekman-Larsson responded for the Coyotes (26-20-5) who have lost five of their last six.
The Oilers had a good start to the contest as Archibald was sprung on a shorthanded breakaway four minutes into the first period and sent his sixth of the season through the legs of Coyotes goalie Antti Raanta, who was making his return after missing the previous three games with a lower-body injury.
Edmonton made it 2-0 with six minutes left when Sheahan hooked a puck from behind the net to Gagner, who banked a shot from in tight at the side of the net off of Raanta’s skate and in for just his second goal of the season.
The Oilers added to their lead with four minutes left in the first as Raanta accidently nudged the puck into his own net during a frantic scramble, with the goal credited to Yamamoto.
Edmonton kept coming to start the second period with a power-play goal one minute into it when McDavid snuck a shot past the Arizona netminder.
The Oilers made it 5-0 five minutes into the middle period as Sheahan picked up his third assist of the game, stealing a puck and sending it to Nygard, who scored on a long shot.
Arizona responded shortly afterwards as Hall scored his 13th of the year, beating Oilers goalie Mike Smith through a screen.
The Coyotes got another one back nine minutes into the second when Dvorak chipped in a rebound on the power play.
A burst of speed by McDavid with four minutes left in the second allowed him to deflect an Archibald pass into the net for his second of the game and 27th goal of the season
Arizona made it 6-3 with a power play goal 11 minutes into the third as Ekman-Larsson picked the top corner.
The Coyotes pulled their goalie early and the Oilers took advantage with just under four minutes left on a goal by Sheahan, giving him his first career four-point game.
Both teams are now taking extended 10-day breaks until Jan 29, when the Oilers will host the Calgary Flames and the Coyotes will travel to Anaheim to face the Ducks.