It is the third time the teams have met in the past two weeks. The Oilers beat the Ducks 4-3 in overtime on March 28, and Anaheim edged Edmonton 3-2 on Wednesday.
The Oilers did get even six minutes into the second period with a power-play goal when Hall banked in a goal off Hiller with a shot from the side of the net for his 27th of the season.
Perron kept pace with Hall for the team's goal-scoring lead three minutes later while Edmonton was short-handed. He beat Hiller with an off-balance shot from the right circle for his 27th. It was Edmonton's fourth short-handed goal of the season.
The Oilers took a 3-1 lead with just over three minutes left in the second period when Eberle swung a puck out front, and the rebound remained loose in the crease before a pinching Schultz tapped it in.
The Ducks got back within a goal during a power play just 25 seconds into the third period when Perry tipped a Ryan Getzlaf's long wrist shot from the point past Fasth for his 42nd goal.
Edmonton withstood a ton of pressure before getting an insurance goal. Eberle also scored his team-leading 27th with an empty-net goal.
Fasth made 34 saves to earn his first win against his former team.
NOTES: It was the fifth and final meeting between the Oilers and Ducks this season. Anaheim went 3-1-1 in the series. The Ducks had won 12 of the past 15 games in Edmonton. ... The Ducks allowed six first-period goals in their three games heading into Edmonton. ... With the playoffs looming, Anaheim rested its two oldest players, Teemu Selanne and Saku Koivu. The Ducks were also without G Frederik Andersen (upper body) and D Cam Fowler (knee). ... LW Jesse Joensuu (ankle), LW Ryan Jones (knee), RW Tyler Pitlick (knee), LW Luke Gazdic (shoulder), RW Nail Yakupov (ankle) and D Andrew Ference (chest) sat out for Edmonton.