Philadelphia survived a second half in which the Union went down a man and faced a penalty kick to defeat the visiting Columbus Crew 3-0 on Sunday.
The Union (11-7-9, 42 points) moved from the seventh and final playoff spot, to a tie with Orlando City for third in the Eastern Conference.
Columbus (9-12-7, 34), the reigning MLS Cup champion, is in peril of missing the playoffs. The Crew are tied for ninth with the New York Red Bulls in the East, six points behind Montreal with six matches left.
Philadelphia is 3-0-1 in the past four games.
Goals by Jack Elliott in the 25th minute and Alex Bedoya in the 46th gave the Union the lead before Kai Wagner was ejected for a second yellow card in the 64th minute, throwing a lifeline to the Crew.
They tried to cut the deficit in half in the 76th minute after Alvas Powell fouled Gyasi Zardes, but Andre Blake saved the penalty kick attempt by Pedro Santos.
Blake, who made three saves for his career-best-tying 10th shutout this season, had an outstanding stop on a curling strike by Darlington Nagbe in the 80th minute.
The Union put the game away with Leon Flach’s goal in the 89th minute, his first in 27 career MLS games, when his shot went through the hands of Evan Bush, playing for the injured Eloy Room.
It was tough game for Bush.
Elliott’s goal, the second of the season for the central defender, was either very fortunate or well placed. He lined up from 30 yards and the shot went around the wall to the near post where it bounced twice before eluding Bush.
“I can’t say it was a great free kick,” Union coach Jim Curtin said at halftime on the television broadcast.
The Crew dug a deeper hole only 30 seconds into the second half when Bedoya scored his second goal of the season on a give-and-go with Kacper Przybylko.
— Field Level Media