Houston scored twice in the ninth in forcing the extra inning but Pence ended the game with his ninth home run of the season. He went down to get a low pitch and lined it over the left field wall.
That handed the loss to Brett Myers (0-1), who faced just two batters.
Phillies reliever Jake Diekman (1-0) got the final out in the ninth picking up the win.
Phillies starter Cliff Lee had a strong outing, allowing five hits and one run over eighth innings. He struck out 10 and walked one.
But the Astros got to reliever Chad Qualls for a pair of ninth-inning runs. Carlos Lee drove in Jordan Schafer, who led off the ninth with a double. With two out, J.D. Martinez singled to right and pinch-runner Brian Bogusevic was able to score when Pence misplayed the ball.
Jason Castro doubled, putting Houston runners on second and third before Diekman came on and struck out Marwin Gonzalez.
Philadelphia took the lead in the second inning when Brian Schneider hit a two-run home run for his first homer of the season. Pence made the score 3-0 in the sixth with his first home run of the day. The Astros got on the board in the seventh when Matt Downs led off the inning with his third home run of the year.