The Oilers won their fourth straight and handed the Blues their fifth consecutive loss.
Neither side managed a goal through the opening two periods, but Ryan Jones finally broke through for Edmonton by tipping in a shot 2:32 into the third.
Eric Brewer tied it on a wrist shot with 6:27 remaining in regulation.
Nikolai Khabibulin made 31 saves to get the win, his second straight after enduring a personal four-game skid.
Jaroslav Halak gave up the winning goal after stopping 23 shots in regulation.
St. Louis has won eight of its 11 home games this year, but the Blues have dropped 10-of-14 on the road.