Kansas City equalised with 10 minutes remaining at home when Dom Dwyer struck from the edge of the area but Philadelphia responded immediately through Cristian Maidana to see Union win 2-1 and claim three points for the first time in 10 games.
Sporting, the leaders of the MLS' Eastern Conference, suffered just their second defeat in eight matches.
The victory took Union to 11 points, five clear of last-placed Montreal Impact in the East, while Philadelphia leapfrogged Toronto FC and Chicago Fire to sit seventh in the standings.
Sporting remain top of the Eastern Conference on 17 points, ahead of New England Revolution on goal difference.
In an even contest, the hosts finished with 15 shots for the match, while Philadelphia made 14 attempts on Sporting's goal.
Union goalkeeper Zac MacMath made two sharp saves either side of half-time to thwart Kansas City's Sal Zizzo as the home team chased their third consecutive win.
And Philadelphia made Sporting pay early in the second half.
The visitors took the lead in the 49th minute with Danny Cruz sliding in to convert the rebound after Maidana's initial shot was saved.
Both sides had chances after the opening goal but it took until the 80th minute for the ball to hit the back of the net again with Dwyer crunching his shot into the roof of the net after a smart reverse pass from Paulo Nagamura.
But less than a minute later, Philadelphia struck again with Maidana converting from Andrew Wenger's pass.
Union lost substitute Corben Bone to a red card in the 90th minute for a high sliding tackle into Jacob Peterson but the visitors held on for victory.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.