Derek Ryan gave the Oilers a 1-0 lead at 2:45 of the first period, jamming a loose puck past Fleury.
McDavid made it 2-0 at 8:59 with a power-play goal off a centering pass from Nugent-Hopkins. It was McDavid's League-leading 25th goal of the season.
Mats Zuccarello appeared to cut it to 2-1 at 9:46, but Oilers coach Jay Woodcroft challenged for goaltender interference, and the call was reversed after a video review.
"We had it on the bench that we thought it was pitchforked and it was goalie interference," Woodcroft said. "We were confident in our process and the understanding of the rule, and we made the call."
Joel Eriksson Ek did make it 2-1 at 11:24, picking up a turnover by Darnell Nurse behind the net and going backhand to forehand past Skinner. Eriksson Ek has 11 points (four goals, seven assists) in his past eight games.
Zuccarello tied the game 2-2 at 6:22 of the second, one-timing a pass in the slot from Kaprizov on the power play.
Kaprizov has 21 points (nine goals, 12 assists) during his point streak.
"I think we gained a little bit of momentum there and I feel like we pushed at the end of the first and into the second," Eriksson Ek said. "They won the game. That's what it's about."
Kailer Yamamoto put Edmonton ahead 3-2 at 12:54 with his first goal of the season, tipping in a shot by Nurse.
Leon Draisaitl extended the lead to 4-2 at 3:43 of the third with a power-play goal, and Nugent-Hopkins scored an empty-net goal with nine seconds remaining for the 5-2 final.
"When you're getting contributions throughout the lineup, it's awesome," Oilers forward Zach Hyman said. "It provides momentum for the team. You get off to the quicker start, I think it just gives confidence to everybody through the lineup. And a lot of guys are playing not more than they had at the beginning of the year, and I think it's really important for a team effort."