Zach Hyman, Ryan McLeod, Evander Kane and Leon Draisaitl also scored for the Oilers (2-2-0). Jack Campbell had 36 saves in the victory.
Andrei Svechnikov recorded a hat trick and Martin Necas added another goal for the Hurricanes (3-1-0), who suffered their first defeat of the season. Sebastian Aho added three assists.
Frederik Andersen stopped 27 shots in the loss.
Edmonton scored the game’s first goal for the first time this season 8:22 into the opening period. On the power play, Tyson Barrie intercepted a clearing attempt and floated a puck on net for Hyman who tipped it past Andersen.
Carolina pulled even 1:38 into the second period as Svechnikov beat Campbell glove side to extend his point streak to four games.
Just over eight minutes into the middle frame, the Oilers regained the lead with their second short-handed goal of the season. Nugent-Hopkins sent the puck across to McLeod on a two-on-one, and he beat Andersen through the legs.
Edmonton made it 3-1 a couple of minutes later as McDavid sent a long pass to spring Kane and he scored his first of the year on the backhand.
The Hurricanes cut into the deficit 12:35 into the second as a Svechnikov shot ticked off a defender’s stick and past Campbell.
A little over a minute into the third period, the Oilers restored their two-goal lead. Andersen coughed up the puck behind his net and Hyman was able to kick it out to Nugent-Hopkins who scored into a wide-open net.
However, just a couple of minutes later, Carolina struck again on the power play as the puck deflected off a skate from the faceoff circle to Svechnikov, who scored his third goal of the game and sixth of the young season.
The Oilers struck on a power play of their own 5:16 into the third as McDavid sent it across to Draisaitl for a one-timer into the net.
Carolina once again punched back with a power-play goal on a tick-tack-toe passing play converted by Necas 8:55 into the third period.
The Hurricanes had a great chance to tie it up with a minute left as Aho went on a breakaway, but Campbell came up with a huge save.
McDavid scored an empty-netter to put the game away with 10 seconds remaining.
Entering the game, Carolina was the only team in the NHL that Oilers captain McDavid hadn’t averaged at least one point per game against in his career, but he changed that with his four-point night … Teammate Kane has had more success against the Hurricanes than any other squad in the league. His 30 points in 33 games were the most in his career against a single opponent … Canes goalie Andersen has absolutely dominated the Oilers over his career, coming into the game with a record of 17-1-2 with a 2.16 goals against average and .928 save percentage against Edmonton … The Oilers were without rookie Dylan Holloway, who was injured on a thundering hit by Buffalo Sabres defenceman Ilya Lyubushkin on Tuesday … Jaccob Slavin picked up the 174th assist of his career, passing Justin Faulk for the most in team history since relocation. Only Dave Babych (196) and Glen Wesley (176) have had more in franchise history.
Both teams are back in action on Saturday. The Oilers play host to the St. Louis Blues in an afternoon affair. The Hurricanes play the fourth of a five-game road trip in Calgary against the Flames.