SAN DIEGO -- J.A. Happ and the Houston bullpen ended a long road losing streak for the Astros.
Jose Altuve doubled and scored twice to help Houston stop its longest road skid since dropping 14 straight in 1997.
|More on Astros-Padres|
|More MLB coverage|
"Everybody has been talking about what's been going on on the road and so forth, but we just needed to play good baseball, and we did tonight," Astros manager Brad Mills said.
Happ (7-9) allowed a double in the first to Alexi Amarista but retired his next 12 batters. The left-hander gave up four hits over 6 1/3 innings while striking out four and walking one.
"I was trying to work quick and get ahead of those guys," Happ said. "I just wanted to keep the ball down in the zone, and for the most part we were able to do that. I felt like I was definitely hitting the corners pretty good tonight."
Jesus Guzman hit a one-out double off the left-center wall in the seventh and Logan Forsythe drew a walk to chase Happ, who threw 86 pitches in the opener of a four-game series.
Mills acknowledged it was a difficult decision to pull Happ.
"It was very tough," the manager said. "Sure enough, he didn't want to come out of the game, but pitchers never want to come out. His command, to me, seemed to be going at that time. I didn't want him to get behind the next hitter and have to lay a ball in there. That was the situation."
Fernando Rodriguez walked Cameron Maybin to load the bases, but Rodriguez struck out Everth Cabrera and induced a fly ball from pinch-hitter Yonder Alonso to end the threat.
"We did enough tonight to win," Happ said. "We made some great defensive plays, too. That helped."
Wilton Lopez allowed a one-out single in the eighth to Amarista, who stole second. Lopez, however, retired Chase Headley and Yasmani Grandal on groundouts.
Brett Myers worked around a two-out infield single by Cameron Maybin in the ninth for his 19th save in 21 chances.
"[Happ] did a good job of coming right at us," Padres third baseman Chase Headley said. "He was throwing strikes right from the start. I felt like we were playing defense for three quarters of the game, like we weren't on offense at all. He did a really good job."
San Diego went 0 for 8 with runners in scoring position and was shut out for the ninth time this season and fifth time at home. Houston (34-56), which has the fewest victories in the majors, recorded its fifth shutout.
Padres starter Kip Wells (1-3) yielded two runs and three hits in 4 1/3 innings. Wells, facing Houston for the second time in four starts this season, walked five and hit two batters with pitches while striking out two.
"I just didn't throw enough fastballs to find a rhythm for them," Wells said. "I felt, in looking back, I should've worked off my fastball more than I did."
Altuve's double to center in the first sailed past Maybin, who took a few steps in before turning and chasing the ball to the wall.
"I think the ball was hit harder than he thought," Padres manager Bud Black said.
Altuve also walked in the third and stole second. Both times he scored on a sacrifice fly by Moore.
"Jose is obviously doing the job in front of me," Moore said. "Fortunately, I was in the situation with less than two outs and a runner on third. It was a good win for J.A. and a good win for us. J.A. pounded the strike zone and really went after those guys and didn't give them room to breathe. He did a really good job."
San Diego outfielder Carlos Quentin was scratched from the starting lineup due to a knee injury. He is unlikely to play on Tuesday. ... Amarista started in left field in place of Quentin. ... Altuve was hit in the hand by a pitch from Wells in the fifth but stayed in the game and is not expected to miss any time.