Philadelphia (9-6-7) remained unbeaten in three games, while the Whitecaps (9-7-5) lost their second straight game.
Hoppenot scored off a Philadelphia counterattack moments after Union goalkeeper Zac MacMath had robbed Whitecaps striker Camilo at the other end.
The Whitecaps were a man down from the 8th minute, when midfielder Jun Marques Davidson received a red card for head-butting Keon Daniel in the back. The incident resulted after Keon kicked the ball while Davidson was on top of it after a whistle.
Daniel received a yellow card for the infraction and had turned to walk away following a confrontation with Davidson when the Whitecaps player struck him.
Davidson, Whitecaps players and coach Martin Rennie protested the ejection to no avail. Following the incident, Daniel was booed every time he touched the ball before subbing out in the second half.
Despite being short-handed, the Whitecaps had several scoring chances. In the 15th minute, midfielder Russell Teibert lobbed Kenny Miller's pass over Philadelphia goalkeeper Zac MacMath - and the net.
In the 27th minute, Vancouver's Young-Pyo Lee shot over the net after taking a pass from Russell Teibert. Seven minutes later, Whitecaps striker Kenny Miller sent a header wide of the net.
Vancouver also had scoring chances in the second half but MacMath turned them away.
The Whitecaps were fortunate not to lose goalie Brad Knighton after he and Philadelphia captain Jack McInerney knocked heads in the 24th minute. Knighton lay face-down on the ground for a few moments, kicking the grass in pain and was tended by trainers, but stayed in the game.
McInerney received a yellow card for his involvement.