Without star duo Sebastian Giovinco and Jozy Altidore again, Eastern Conference leader Toronto fell behind in the 82nd minute after Revs substitute Lee Nguyen gave the home side the lead when his shot deflected off Drew Moor and past Toronto goalkeeper Clint Irwin.
Toronto responded within two minutes via Nicolas Hasler but the Revs had the final say after Kei Kamara headed home the winner in the 87th minute.
The high-flying Canadian outfit had the chance to seal the Shield following second-placed New York City's 1-1 draw at home to Houston Dynamo.
Toronto is 10 points clear of New York City atop the east, while the Fire are four points further back after their 3-1 loss to the Union.
Once on pace for the Shield, Bastian Schweinsteiger and the Fire have struggled for consistency and momentum, and that continued against the resurgent Union, who snapped a streak of three successive draws courtesy of a Chris Pontius brace.
Minnesota United won consecutive matches after dismantling 10-man FC Dallas 4-1, lowly D.C. United crushed the San Jose Earthquakes 4-0 thanks to a four-goal haul from Patrick Mullins, while the New York Red Bulls suffered a 3-2 loss at the Columbus Crew.