The game was tied 1-1 in the 38th minute when Barnes headed home a corner kick by Brad Davis, and the Dynamo (14-11-9) assured themselves of a post-season appearance for the seventh time in eight years.
Oscar Boniek Garcia converted a penalty kick and Bill Hamid recorded five saves for Houston, which has fallen in the MLS Cup Final to Los Angeles in each of the last two seasons.
Kyle Porter scored for hapless D.C. United (3-24-7), which set an MLS record for fewest wins in a season.
Gal Gadot cast as Wonder Woman for 'Batman vs. Superman'
Jordana Brewster on Paul Walker: 'He was an enormous presence in my life'