O'Donnell's first of the season came on a point shot that went untouched through several legs to put the Kings ahead for good.
Sheldon Souray and Ryan Potulny scored for the Oilers, who had a five-game winning streak snapped. It was Edmonton's best run since 2006.
The Kings took a 1-0 lead 5 minutes in. Denis Grebeshkov give the puck away at the Kings' blue line, allowed Brown and Richardson to go on a 2-on-1 break. Richardson tucked the puck between the legs of goalie Jeff Deslauriers.
Los Angeles went up by two goals 4 minutes into the second when Richardson went around defenseman Lubomir Visonovsky and fired a shot. Deslauriers made the initial save, but Brown made a diving play to whack in the big rebound.
The Kings then turned over the puck in their own end with 8 minutes left in the second. Dustin Penner picked off a pass deep in the Los Angeles zone, but was stopped on the breakaway by goalie Jonathan Quick.
On the ensuing faceoff, Souray ripped a shot into the top corner to cut the Oilers' deficit to 2-1.
Edmonton tied it 4 minutes into the third when Tom Gilbert sent the puck up ice to Souray, who set up Potulny for his sixth goal of the season.
NOTES: Los Angeles won the first game of the season series last month in Edmonton 3-1. ... Deslauriers made his 12th consecutive start for the Oilers because Nikolai Khabibulin is out with a back injury. Khabibulin had a procedure done on Tuesday, described by coach Pat Quinn as "spinal stuff." ... Grebeshkov returned after missing 13 games because of a knee injury. ... The Kings were without forwards Jarret Stoll, who left Monday's game in the third period because of a groin injury, and Wayne Simmonds, who had surgery earlier in the week to clean up cartilage damage in his left knee. ...The Kings recalled C Corey Elkins from the AHL on an emergency basis. It was Elkins' first NHL game.