Toronto (7-5-5) extended its undefeated streak to three games and Houston's winless streak reached eight games.
Oduro redirected Luke Moore's pass from the end line past Dynamo goalkeeper Tally Hall to even the game at two in extra time just before the half.
Will Bruin started the scoring for Houston (5-11-4) in the 11th minute as he collected a poor back-pass by Toronto's Bradley Orr and scored into an open net.
Toronto evened it seven minutes later as Gilberto settled a volley pass from Justin Morrow, spun, and fired past a diving Hall.
The Dynamo retook the lead at the 26-minute mark. Giles Barnes beat Toronto goalkeeper Joe Bendik from the top of the box after making a long midfield run.