Adam Henrique had two goals and Josh Manson and Corey Perry also scored for the Ducks, who are on a 5-0-1 streak.
Connor McDavid, Ty Rattie, Leon Draisaitl and Ethan Bear scored for the Oilers, who ended a three-game winning streak.
After a scoreless first period, Edmonton scored 1:46 into the second when McDavid beat goalie John Gibson with a long-range wrist shot for his 39th of the season.
The lead lasted only 19 seconds, until Manson sneaked one past goalie Cam Talbot on a similar shot.
Edmonton went up 3-1 with 1:42 left in the second on a one-time blast from a bad angle by Draisiatl, his 24th.