The Union dominated the play from start to finish, putting pressure on Toronto's defense while winning consecutive MLS games for the first time since mid-April.
Gomez beat goalkeeper Milos Kocic to the far right corner of the net in the 34th minute, on an assist from Jack McInerney. Philadelphia struck again two minutes later when Adu went flying down the left side and took a shot that also caught the far right of the net.
Hoppenot scored in the 78th minute, and Union defender Sheanon Williams preserved the shutout with a goal-line header in the 82nd minute.
Toronto FC picked up one of its two MLS victories this season against Philadelphia, a 1-0 decision on May 26.