The Blues won their fourth straight and moved into a tie with Detroit for the lead in the Central Division. Both teams have played 64 games and are just one behind Vancouver for the largest point total in the league.
McDonald's quick goal was the only one of the first period, but he scored again 7:34 into the second to give the Blues a 3-0 lead.
Corey Potter and Ryan Nugent-Hopkins produced second-period goals to bring the Oilers within one, but Kevin Shattenkirk boosted the Blues' advantage with a power-play goal early in the third.
Chris Stewart finished the scoring on a penalty shot 7:54 into the final period.
Jaroslav Halak stopped 22-of-24 shots for the victory. Devan Dubnyk was removed in favor of Yann Danis after giving up three goals on 19 shots.
Danis, recently recalled from Oklahoma City of the American Hockey League, made his season debut and appeared in an NHL game for the first time in two seasons.
This was his first game for St. Louis after having previously played for Montreal, the New York Islanders and New Jersey. He allowed two goals on 12 shots.