In Montreal, Tim Wallach's two-run single highlighted a four-run seventh inning and Andre Dawson homered and drove in five runs to extend the Expos' winning streak to five.
St. Louis starter John Tudor (0-3) carried a 3-1 lead into the seventh, which started with a pinch single by Mike Fitzgerald, the first of 10 batters that inning.
Consecutive singles by Tim Raines and U.L. Washington cut the lead to one run and Dawson followed with an RBI single off reliever Jeff Lahti. After Hubie Brooks beat out an infield hit to load the bases, Wallach lined a single to right field for a 5-3 lead.
The Expos got three more runs off Neil Allen in the eighth on singles by Raines and Washington and Dawson's fifth home run of the season, his fourth hit of the game. He has hit five homers in his last seven games.
Winner Joe Hesketh (2-1) allowed five hits in seven innings, then Bert Roberge earned his first save.
Tom Nieto drove in two runs for the Cardinals on a ground out in the second and a single in the seventh. The other St. Louis run came on a throwing error in the first inning by Montreal first baseman Razor Shines.
The Expos scored a run in the bottom of the first on Dawson's grounder.