Chris Mueller sparked the winning goal with some tremendous footwork to beat defender Kai Wagner. After a deflected cross, Navarro made the most of the play by converting a right-footed shot for his first goal of the season.
It was only the 15th goal of the season for the Fire (4-8-5, 17 points), the lowest-scoring team in MLS. The Union (7-2-8, 29 points) have also conceded only 13 scores, the fewest goals allowed by any team this season.
The Fire entered Wednesday's action in last place in the league standings. After struggling through a 10-game (0-7-3) winless drought, Chicago has now won two of its last three games.
Eastern Conference-leading Philadelphia lost for just the second time this season. The result ended the Union's unbeaten streak at nine games (7-0-2), one short of the regular-season franchise record for games without a loss.
Philadelphia was reduced to 10 men in the 72th minute, after Jose Martinez received his second yellow card of the game.
Even before Martinez's red-card ejection, the Fire looked like the better team. Chicago held 57 percent of the possession and outshot Philadelphia by a 14-8 margin (3-2 in shots on goal).
The Fire came close on two other near-misses in the first half. A close-range Rafael Czichos shot went just wide in the ninth minute, and Philadelphia goalkeeper Andre Blake had to make a big save of a curling attempt from Mueller in the 39th minute.
Gabriel Slonina's seventh shutout of the season included a tremendous denial of Cory Burke in the 47th minute. Burke's close-range header was deflected off the post by the Chicago goalkeeper, and Slonina then quickly gathered the loose ball before it could cross the line.
Xherdan Shaqiri sparked Chicago's attack with several pinpoint passes in his return to the lineup. The designated player missed the Fire's previous two games due to injury and illness.