The Italian forward scored scored his second goal in the 28th minute, breaking a 1-1 tie, and he doubled the advantage 4 minutes later off an assist from Andres Romero for the hat trick.
Andrew Wenger scored in the 74th minute for a 4-2 Montreal advantage and Blake Smith added an insurance tally in stoppage time for the Impact (7-2-2).
Jack McInerney tied Di Vaio for the MLS scoring lead at nine goals with a 5th-minute tally for the Union (5-5-3).
Antoine Hoppenot and Sebastien Le Toux also scored for Philadelphia.
Members of Congress to keep receiving porn magazine
Rosie O'Donnell unveils nearly 50-pound weight loss