Chris Stewart, Maxim Lapierre, David Backes and Patrick Berglund also scored for the Blues (30-7-5) who have gone 11-1-2 in their last 14 games to move two points back of the Central Division-leading Chicago Blackhawks.
St. Louis controlled the pace in the early stages of the game, out-shooting Edmonton 9-1 through the first eight minutes with Oilers starter Ilya Bryzgalov forced to make a number of big saves. Edmonton had the best scoring chance of the opening half of the first period, however, as Jordan Eberle picked up a rebound in the blue paint before goalie Brian Elliott dove across to make a pad save.
The Blues took a 1-0 lead with just over seven minutes to play in the first as Stewart teed up a blast from the point on the power play that cleanly beat Bryzgalov for his 14th goal of the season.
Edmonton had a great chance to pull even to start the second as Ryan Nugent-Hopkins had a clean short-handed breakaway, but Elliott was able to make a big glove save on his backhand shot.
The Oilers took advantage of another giveaway at the St. Louis blueline a minute-and-a-half into the second period, however, as David Perron sent Yakupov streaking up the wing and he put a wrist shot past Elliott.
The Blues responded just 42 seconds later, though, as Lapierre pushed rookie Brad Hunt off the puck along the boards and calmly took the puck to the net and hooked a shot past Bryzgalov. It was difficult to tell how the goal actually went in, but the refs checked for a hole in the net and the goal counted. Lapierre was playing in his 500th career NHL game.
Edmonton kept pace with a goal five minutes into the middle frame to make it 2-2. Luke Gazdic sent a pass from behind the net and Arcobello was able to chip it up and over Elliott and into the St. Louis net.
St. Louis regained the lead with nine minutes left to play in the second as the Blues' power play unit kept the Oilers hemmed in their own zone for a minute-and-a-half before Backes finally picked the top corner for his 17th of the season.
The Blues made it 4-2 with six minutes left in the second as a face-off win allowed Tarasenko to score on a quick shot from the top of the circle.
Berglund iced the game with an empty-net goal in the final minute.
The Blues play the second game of a three-game Western Canadian trip on Thursday in Calgary. The Oilers next play host to the Pittsburgh Penguins on Friday.
Notes: The Blues came into the game riding a wave of success against Edmonton, having defeated the Oilers in six of seven and in 12 of the previous 15 meetings. They had also won three in a row and six of their last eight in Edmonton… The disparity between the two teams was well illustrated as the final Olympic teams were announced on Tuesday. St. Louis has 10 players heading to Sochi for the Winter Olympics, while Edmonton has just three. One of those Oilers, Anton Belov was picked for the host Russian team, despite being a healthy scratch for Edmonton the last three games… Blues goalie Jaroslav Halak returned to the lineup from an illness. Defenceman Roman Polak (lower-body) and leading scorer Alex Steen (concussion) remain out… Oilers defenceman Corey Potter (groin injury) missed his sixth game while defenceman Philip Larsen continued to be absent with an illness… Oiler forward Ales Hemsky left the game after taking a first period hit from St. Louis' Ryan Reaves.