Ference intercepted the puck at center ice with the teams playing three skaters a side in overtime and unleashed a shot just across the blue line that beat Ducks goalie Jonas Hiller.
"Scrivens bailed us out a lot tonight; it wasn't a complete game by us," Ference said. "They had some really good chances, but they're a good team and they drove us back, especially that top line.
"That's what we have a good goalie for, so it's nice to see him come up big. The penalty kill at the end was huge. We're not going to get picky about having some positive feelings in here."
Scrivens, who set a record for most saves in a regular-season shutout with 59 against San Jose earlier this season, was all smiles after the game.
"It's always fun to win in overtime," he said. "I'm really happy for Oscar to get his first NHL goal, he should be very proud of that, and for our captain to step up and bring it home, it was huge."
Oilers coach Dallas Eakins said his team seemed to wake up late in the game after being "extraordinarily cautious" for the first two periods.
"I thought we played much better in the third, but for two periods, I didn't love how we were playing," he said. "Our goalie was keeping us in it, and we had the ability to finish when we did have a chance."
Nick Bonino, Patrick Maroon and Mathieu Perreault scored for the Ducks, who had a two-game winning streak come to an end and missed out on an opportunity to move into a tie for first in the Pacific Division with the idle San Jose Sharks.
The Ducks remain one win short of tying their franchise record of 48 wins in a season, set in 2006-07 when they won the Stanley Cup.
"We let them hang around," Maroon said. "We couldn't find a way to keep going at them, and they get that goal in overtime. We have to play hard for 60 minutes every night. We can't just play 20 minutes on and 20 minutes off. We had them. It was there."
Ducks coach Bruce Boudreau agreed that his team squandered what could have been a win.
"We had opportunities to win it and put it away, and we didn't," he said. "When you let a team back into a game, that happens and you are not going to get what you want. We certainly had our chances. We had pucks lying around in the crease, we were hitting posts and crossbars.
"(Scrivens) was pretty good tonight. Anytime you get over 50 shots on goal and you lose, you have to tip your hat a little bit to the goalie."
It didn't take Anaheim long to take a lead, scoring just 35 seconds in, as Bonino converted a nice give-and-go with Ryan Getzlaf for his 19th goal of the season on the game's first shot.
The Oilers tied it at 1 on their first shot just shy of five minutes into the first period as Gagner took a pass on a 2-on-1 from David Perron and beat Hiller with a backhand shot. It was Gagner's 100th career goal.
Edmonton caught a bit of a break a minute later as a deflected shot that Scrivens did not see clanged off the crossbar.
Anaheim outshot the Oilers 12-5 in the opening period.
Edmonton had a bit more luck on its side four minutes into the second period as a shot got past Scrivens and was rolling into the net before Taylor Hall swooped in and fished it to safety just before it crossed the goal line.
Scrivens helped his cause a couple of minutes later with a huge diving save in tight on Ducks forward Jakob Silfverberg.
The Oilers took a 2-1 lead midway through the second on an odd-man rush with a delayed penalty on the way as Ryan Nugent-Hopkins shrugged off a defender and fed the puck to Eberle, who beat Hiller with a high shot for his 24th goal of the season.
Anaheim tied the game with just less than five minutes left in the second, as it had several cracks at a loose puck in front of the Oilers' net before Maroon batted it in.
The shots favored the Ducks 28-12 after 40 minutes.
Edmonton regained the lead at 8:26 of the third period as Klefbom scored on a shot through traffic from the slot. It was the first career NHL goal for the rookie defenseman, playing in his ninth game.
Anaheim tied it with 4:30 to play in the third as a Perreault shot hit Hall's stick in front and deflected into the top corner before Scrivens could react, eventually sending the game to overtime.
The Ducks close out a three-game trip in Vancouver on Saturday. Edmonton finishes off a six-game homestand Sunday against the New York Rangers.
It was the third of five games between the two teams this season, with the Ducks winning both of the previous matchups in Anaheim. ... Ducks forward Teemu Selanne has made a career of scoring against the Oilers. Selanne went into the game with 49 goals and 91 career points in 82 games against Edmonton. ... Former Ducks goalie Viktor Fasth remained out of the Edmonton lineup after a collision in practice left him with a neck injury. AHL call-up Laurent Brossoit served as the Oilers' backup. ... Edmonton defenseman Anton Belov returned to the lineup, playing his first game since Feb. 27. ... Remaining out with injuries for the Oilers were forwards Nail Yakupov (ankle) and Jesse Joensuu (ankle). ... Anaheim defenseman Cam Fowler (knee) is still out and might be out until the start of the playoffs. ... Former Oilers goalie Curtis Joseph was honored at the game.