The Oilers ended a three-game losing streak and won on the road for the first time in six tries.
Lubomir Visnovsky and Robert Nilsson tallied in the opening period and the Oilers had a 2-1 advantage going into the second. O'Sullivan produced goals on a pair of wrist shots less than 3 minutes apart in the second.
Jeff Deslauriers, who has given up an average of 3.02 goals per game this year, made 27 saves to get the win. He had lost four of his previous five starts. Jimmy Howard surrendered all four Edmonton goals on 36 shots.
Detroit had won two in a row. Edmonton came into the game tied with Anaheim for the fewest points in the Western Conference at 24.