Giovinco has a goal or an assist in 10 of 12 games this season, totalling seven goals and six assists.
He evened it at 1 in the 34th minute, beating two defenders with a skilled cutback and powering a shot over the head of goalkeeper Andrew Dykstra. His go-ahead goal was a knuckleball from distance.
Toronto (6-5-1) won its third straight game, while D.C. United (8-4-4), the Eastern Conference leader, fell one game short of tying a club record for consecutive unbeaten home games.
United's Steve Birnbaum got his first MLS goal in the sixth minute with an easy redirection of Fabian Espindola's corner kick. Espindola had a shot hit the post in the fifth. Kofi Opare had a goal disallowed in the 60th after Birnbaum was whistled offside on Espindola's free kick.