HOUSTON -- Andy Pettitte earned a win -- even with his left elbow ailing again.
But Pettitte, who had season-ending elbow surgery last year, departed because of tightness in his left elbow and is day to day. He allowed three hits, struck out four and left with a 3-1 lead.
"We just didn't want to take any more chances," Houston manager Phil Garner said. "He said he felt something after the fifth. I don't think it's anything serious. We fully expect him to take his next start."
To Pettitte's advantage, that won't be for eight days because of the All-Star break. He went nine innings two starts ago against Texas and six innings against Cincinnati last Saturday, and said he felt stronger than he had all season.
"Right when I start running my mouth off about how good my arm feels, something like this happens," Pettitte said.
He considered trying to go out in the sixth.
"I thought I could if I pushed it," he said. "But I've been feeling so good, I didn't want to do anything to set it back."
As for the Padres, they saw more than enough of Pettitte.
"He's always tough. You notice we got back into the game after he went out. It was definitely a good thing for us when he came out," said Robert Fick, who was 0-for-2 against Pettitte and 2-for-2 after he left.
Biggio had a go-ahead RBI double in the sixth inning that pushed him past Roberto Alomar for 50th on the career hits list with 2,725.
"It was nice, especially when it turned out to be such a big run," Biggio said. "We're winning games now. That's the important thing."
The Astros have won seven of eight and 13 of 16 to move ahead of the Chicago Cubs for second place in the NL Central. San Diego, which leads the NL West, lost for the ninth time in 14 games.
Russ Springer, Mike Gallo, Chad Harville and Chad Qualls combined for three innings of relief. With All-Star closer Brad Lidge still working his way back from a sore right biceps, Dan Wheeler got three outs for his third save.
All-Star Jake Peavy (7-3) went 5 2/3 innings for the Padres, allowing five runs and 11 hits. He struck out five.
"He was off a little bit," manager Bruce Bochy said. "He got the ball up in the first inning and made some mistakes. They had a big inning and that turned out to be the difference in the game. He was much better after the first inning."
"Our bullpen did a great job of picking us up," Bochy said. "They gave us an opportunity to win."
Ensberg, who was 2-for-3, also helped Pettitte with diving stops in the first and third.
In the fourth, Brian Giles tripled to right-center and Robert Fick's RBI groundout narrowed Houston's lead to 3-1.
Everett's sixth-inning triple went off the glove of a diving Giles in right-center. Chris Burke punched a single between third and shortstop for a 4-1 lead.
Two outs later, Biggio's double drove in Burke.
Biggio made an error at second base in the seventh, and Sweeney had an RBI groundout. Sweeney scored when he and Damian Jackson pulled off a double steal, making it 5-3.
Eric Young doubled leading off the eighth and moved to third on a wild pitch. Ryan Klesko's liner to left went off Berkman's glove for an error that allowed Young to score and close the gap to 5-4.
- With Roy Oswalt landing the final NL All-Star spot by winning the online voting, the Astros have three pitchers in the All-Star game for the first time since Mike Hampton, Jose Lima and Billy Wagner made it in 1999. When Oswalt's selection was announced during the third inning, the fans gave him a standing ovation and Oswalt stepped up in the dugout and tipped his hat.
- Houston's Willy Taveras got two more infield hits, giving him 40, most in the majors. His 17th bunt single in the fifth set a club record. The old mark of 16 was set by Steve Finley in 1991.
- Burke extended his career-high hitting streak to 11 games.
- Giles is 5-for-10 in the series.
- Sweeney's steal of home was the first by a Padres player since Phil Nevin did it at Colorado on Sept. 8, 2002.