The win snapped a three-game losing streak for the Blues, who will not be in the playoffs for the second year in a row. St. Louis has won just three times in its last 10 games.
Edmonton, also out of the playoffs, is 1-9-1 in its last 11 games.
The Blues outshot the Oilers 42-18.
After losing a two-goal lead in the first period, The Blues regained their two-goal advantage in the second period.
St. Louis took a 3-2 lead at the 10:08 mark on a goal by Lee Stempniak. He scored his 24th goal after getting the puck at the blue-line and snapping in a shot from the top of the slot. At 16:03, Jay McClement took a pass from Weight and knocked in the puck from the right side of the net.
Petr Cajanek added an empty-net goal with 30 seconds.