Houston's victory, coupled with Columbus' 3-2 loss at DC United, means the Dynamo (14-8-11) can finish no worse than fifth in the Eastern Conference and are into the postseason for the sixth time in seven years. Houston is unbeaten in the last three games and extended its home unbeaten streak to 25 games, dating to June 2011.
Philadelphia (10-16-6) had won two in a row.
Garcia put the Dynamo up 2-1 in the 71st minute, taking a pass from Brian Ching, settling it down and blasting one from the top of the arc. Philadelphia goalkeeper Zac MacMath got a hand on but it still found the inside of the far post.
Davis converted a penalty kick in the 75th minute, sending the ball into the left side as MacMath went right. Houston was awarded the penalty kick after Carlos Valdes took down Will Bruin in the box on a breakaway.
Philadelphia's Jack McInerney tied it at 1 in the 19th minute, taking a Sheanon Williams cross from outside the upper left box and heading it inside the far post from 10 yards out.
Macoumba Kandji put the Dynamo ahead in the fifth minute, taking a clear attempt off of Valdes' foot, dribbling it inside the upper box and hitting a shot inside the near post from 16 yards out.
Kandji had another chance in the 39th minute, getting a cross from Davis on the end line, but his one-timer went over a wide open net.