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.
Boston schools pull out free condoms over wrapping complaints
NBC reportedly holds celebs hostage to Jimmy Fallon's show