SAN DIEGO -- Woody Williams was outstanding against his old team, and Lance Berkman put the Houston Astros over the top.
Berkman hit two long home runs to back Williams' superb pitching effort as the Houston Astros defeated the San Diego Padres 3-1 on Friday night.
Berkman supplied the power with his 22nd and 23rd homers, including the go-ahead, two-run blast in the eighth inning. Williams stifled his former teammates with seven solid innings.
"Woody did a masterful job," said Houston manager Phil Garner.
Berkman put the Astros ahead 3-1 in the eighth with his second homer, a towering two-run shot to center field off reliever Heath Bell (5-4). The home run went an estimated 419 feet. It was Berkman's first multihomer game of the season.
Berkman also hit a two-out solo homer off starter Jake Peavy to give the Astros a 1-0 lead in the third inning.
"The Lance Berkman show, I guess," Peavy said. "He had some great at-bats and won the game."
While Peavy is one of the better pitchers in the majors, he was matched pitch for pitch by Williams, who will turn 41 on Sunday. The pitching duel played out over seven innings with Williams (7-12) gaining the upper hand.
Berkman said Williams was tremendous.
"That was the only reason we even had a chance to win the game. He was about as good as he's been all year," Berkman said.
Berkman, a career .304 hitter, has struggled this year, hitting just .267. But he is riding a seven-game hitting streak in which he has batted .462 (12-for-26).
Berkman hit a Peavy change-up an estimated 417 feet into the right-field stands. He then hit a slider over the middle of the plate against Bell for his second home run.
"Lance is a good hitter," Bell said. "If you make a mistake, he's going to make you pay, just like he did tonight -- twice."
The Astros' winning rally started with Mark Loretta's one-out single. He was replaced by pinch-runner Eric Bruntlett. Berkman then unloaded on Bell.
"It's nice to get a few hits and finally contribute," Berkman said.
Peavy was locked in a pitching battle with Williams before he was lifted for a pinch-hitter. Peavy allowed one run and four hits in seven innings as his four-game winning streak was halted. The right-hander struck out 11 batters for his sixth double-digit strikeout game of the season. He leads the NL with 175 strikeouts.
Peavy, who struck out the side in the seventh, lowered his ERA to 2.20, second in the majors behind teammate Chris Young's 1.93.
But he was matched by Williams, who also allowed one run in seven innings. Williams gave up six hits with four strikeouts and a walk.
"Woody is a competitor," Peavy said. "Woody is a guy who competes as hard as anyone that I have played with."
Williams said he knew he would have to pitch extremely well when facing Peavy.
"There are four or five guys who can go out there and dominate a game, and he is one of them," Williams said. "But I was able to throw strikes and keep them off balance."
Brad Lidge pitched the ninth inning for his 10th save in 15 chances.
The loss dropped the Padres to four games behind first-place Arizona in the NL West. San Diego also dropped into a tie with Philadelphia for the wild-card lead.
The Padres tied the score at 1-1 in the fourth inning after Adrian Gonzalez led off with a single and went to third on Khalil Greene's single. Gonzalez then scored on Terrmel Sledge's groundout.
San Diego, which has the worst batting average in the majors, reverted to its normal offensive ways after its 11-9 win over the Colorado Rockies on Thursday night when the Padres had a nine-run inning and 14 hits.
The Padres loaded the bases against Williams with one out in the second. But Williams struck out Josh Bard looking and got Peavy to ground out.
Morgan Ensberg played his first game against Houston, his former team, which designated him for assignment on July 28. Ensberg went 0-for-3 with a walk.
Peavy was attempting to win his fifth straight start for the first time in his career. ... Craig Biggio, retiring at the end of the season, received a standing ovation when he was introduced right before the start of the game. Biggio came out of the dugout, doffed his batting helmet and remained on the field for about 30 seconds. He went 0-for-4.