The Italian striker finished a play that that began with an excursion by defender Eric Miller up the left side of the pitch. Di Vaio shot from about 15 meters out to put the cap on a night that saw the teams play a less than enthralling opening half.
Impact coach Frank Klopas sent on Brazilian midfielder Felipe Martins for captain Patrice Bernier to open the second half, then subbed in forward Andres Romero for Ignacio Piatti in the 54th minute. The latter move nearly paid dividends in the 59th minute, when a diving Chicago goalie Sean Johnson got a hand on a Romero shot to thwart a Montreal scoring chance.
A 79th-minute attempt by Fire midfielder Matt Watson off a corner kick was easily handled by Montreal goalkeeper Evan Bush, who also took care of a stoppage-time try by midfielder Jeff Larentowicz from 6 yards out to keep a clean sheet.
The scoreless opening half saw the teams feel each other out, with neither side presenting major threats.
Impact midfielder Justin Mapp came close to springing Di Vaio in the 17th minute, but the attempt was thwarted at the top of the 18-yard box. Moments later, Mapp was at the origin of another probe, feeding Piatti, who shot toward Johnson's goal. However, the recently acquired Argentine midfielder's attempt was deflected for a corner kick.
Piatti carried the ball in from midfield in the 34th minute and crossed it to Di Vaio. The home team's offensive opportunity was negated when the Italian striker lost his footing on the rain-dampened turf.
Ianni was shown a yellow card for a dangerous tackle on Piatti in the 24th minute. Ianni brought the new Montreal designated player down once again in stoppage time at the end of the first half, much to the displeasure of the crowd, but without provoking a reaction from referee Kevin Stott.