Hamid had been called into the action earlier in the half to deny Defoe from close range as the Canadians tried to forge a first-half lead.
With the interval approaching, Defoe linked up with Bradley again, but saw his effort thwarted by the United shot-stopper.
After the break, the visitors had their best chance to score when Luis Silva saw his shot blocked. They took the lead when Nick DeLeon capitalised on poor defending from the home side, before weaving his way into the box and beating Joe Bendik.
However, they were pegged back on the hour mark when United failed to clear their lines and Luke Moore turned a loose ball home from close range.
Toronto looked for a late response, with Nick Hagglund and Defoe again involved, but the Canadians were unable to hit the target. Their night was compounded when Hagglund was sent off for a bad challenge.
In the end, DC held on for victory to move three clear of Sporting Kansas City.