The Blues outshot the Canadiens 32-27 overall.
St. Louis opened the scoring at 2:38 of the first period when Steen fired home his league-leading 13th goal of the season.
Blues captain David Backes started the play by stealing the puck from defender Douglas Murray, who was playing softly behind his own net. Backes pushed Murray down with little effort and passed the puck to a wide-open Steen, who beat Price over his left shoulder.
Montreal tied the game at 5:38 of the second period. Andrei Markov drove hard to the net, knocking Halak in the process. With Halak still shaken up, the puck fell to Bourque in the crease, making no mistake from close range.
Bournival put the Canadiens in front at 14:49, his fourth of the year, when he intercepted a poor pass from Jay Bouwmeester in the St. Louis zone and quickly fired a slap shot between Halak's legs.
Stewart levelled the score at 10:31 of the third period by deflecting a Kevin Shattenkirk blue-line shot off the post and in past Price.
Tomas Plekanec was awarded a penalty shot in the final minute of the third period, but missed the net high and wide.
Overtime solved nothing before Oshie scored the shootout winner.
Former Canadiens netminder Halak returned to Montreal for just the second time since being traded to the Blues in 2010. Halak earned a shutout in his only other trip to Montreal in Jan. 2012, beating 3-0 the team he once led deep into the playoffs. The Slovak goalie is now (3-0) against his old club.
David Desharnais was out of the Canadiens lineup after a regrettable start to his season. The 27-year-old forward, who recently signed a 4-year contract extension with the Habs, has managed only one point in 15 games this season.
Forward Martin St-Pierre, who was recently called up from the Hamilton Bulldogs (AHL), made his Montreal Canadiens debut playing on the fourth line with George Parros and Ryan White, in place of Desharnais. St-Pierre, who currently leads the Bulldogs with eight points, finished the game with 9:53 of ice time.
Notes: The Canadiens were coming off back-to-back road losses to the Minnesota Wild and Colorado Avalanche. … Montreal was without injured players Daniel Briere, Brandon Prust, Alexei Emelin and Travis Moen. There is no timetable yet for their return. … Montreal last beat St. Louis in Nov. 2008. … Montreal heads to Ottawa to play the Senators on Thursday, Nov. 7.