Jakob Glesnes, Daniel Gazdag, and Sergio Santos all scored within a 24-minute span during a dominant first half. The Union outshot Toronto FC (3-9-5, 14 points) by a whopping 13-2 margin in the opening 45 minutes, with a 7-0 edge in shots on goal.
The victory allowed Philadelphia (7-4-7, 28 points) to snap a three-game winless drought.
Toronto FC lost for the first time in six games (2-1-3) under interim head coach Javier Perez.
Andre Blake had to make only one save for his seventh shutout of the season, but it was a pivotal stop that essentially quashed Toronto's chances at a second-half comeback.
Yeferson Soteldo was awarded a penalty kick in the 53rd minute, but Blake guessed correctly in diving to his right and made the save.
The Union's pressure started early, as Glesnes scored in the 12th minute. On a corner kick, Glesnes deflected the ball off the back of his head after outjumping defender Chris Mavinga.
Alex Bono made a pair of big saves early in the game, but the Toronto goalkeeper also fouled Santos in the box in the 32nd minute. Gazdag converted the ensuing penalty kick for his first goal since signing with Philadelphia in May.
Three minutes later, Santos got on the scoresheet himself. The striker took a long pass downfield from Jose Martinez and then rather easily made his way through the ill-positioned Toronto FC defense for his fourth goal of the season.
It was a much more clinical display of finishing for the Union than their previous game, a 1-1 draw with the Chicago Fire. Philadelphia outshot the Fire by a 25-4 margin but could manage only the single goal last Sunday.