Oduro and Marco Donadel scored in the first eight minutes, and Oduro added another goal late in the match.
Montreal (6-7-3) stopped a three-game winless streak while earning a sweep of its two-game season series against the Crew (6-7-6).
Rebounding from a home loss to New York City in which they wasted several chances, the Impact scored on two of their first three opportunities.
Clark made a save from close range on Piatti, but the Argentine played the ensuring corner kick to Calum Mallace, who fed Donadel for a shot from outside the area that looked to change direction twice in midair and catch the top corner in the eighth minute.
The Impact were content to play for counterattacks in the second half and the Crew nearly made them pay. Tony Tchani forced a leaping save by Bush in the 59th and Justin Meram ripped one off the bar in the 61st. Then Finlay was stopped in alone by Bush in the 65th.
Oduro sealed the win with his fourth of the season in front of a crowd of 15,304 at Saputo Stadium. Oduro pushed the ball in after Clark was unable to hold onto a low shot from Dilly Duka in the 80th.