The Texans needed at least a point to keep alive their hopes of a top-five finish, but the defeat has left them seven points adrift with only six left on offer this season.
Fabian Espindola was responsible for the first effort of the game after just two minutes, but the DC man's effort sailed into the stands.
The weather situation deteriorated to the point that both teams had to come off the pitch in the 22nd minute, thunder and rain delaying proceedings for over an hour.
Play eventually resumed once the worst of the weather had passed, with Espindola heading high shortly after the restart.
Eventually, the visitors took the lead with just three minutes left in the first half, as Taylor Kemp scored his first career goal with a powerful left-footed shot.
The Dynamo set about trying to reduce the deficit in the second half, with Ricardo Clark firing just wide in the 47th minute, but it wasn't long before the visitors stepped it up a gear.
Barnes did atone for his earlier miss by halving the deficit with an 83rd-minute penalty, but Eddie Johnson struck just four minutes later to seal the win and end Houston's playoff hopes once and for all.