Houston Milton Bradley homered and Brian Giles had a season-high three RBIs for San Diego and Jake Peavy won for the first time since June 19.
Peavy (10-5) allowed one run and four hits and struck out eight for the Padres, who won for the second time in eight games. He is 5-0 with a 0.98 ERA on the road this year and his 2.41 season ERA remains second in the NL.
Woody Williams (5-12) went six innings and allowed four runs and eight hits as the Astros' three-game winning streak ended.
Peavy knocked in the Padres' first run with a single in the second inning. Giles, Adrian Gonzalez, Josh Bard and Peavy had two hits each.
Phillies 8, Pirates 1, 7 innings - rain
Philadelphia - Pat Burrell homered and had three RBIs and Jamie Moyer allowed one run in seven innings in Philadelphia's rain-shortened win over Pittsburgh.
Nationals 6, Mets 2
New York - Washington's Ryan Church and Austin Kearns homered to back the pitching of former Met Mike Bacsik.
Reds 5, Cubs 4
Cincinnati - Edwin Encarnacion's ninth-inning RBI single gave Cincinnati the victory.
The Cubs have lost consecutive games for the second time in less than a week.
Reds starter Bronson Arroyo allowed two unearned runs in 72â3 innings.
Brewers 12, Cardinals 2
st. louis - Claudio Vargas worked eight innings for the first time in four seasons and was backed by Milwaukee's 19-hit attack.
D'Backs 8, Braves 7, 11 innings
Phoenix - Tony Clark homered to lead off the bottom of the eleventh inning, and the Arizona Diamondbacks beat the Atlanta Braves 8-7 Friday night after squandering a seven-run lead.
Giants 12, Marlins 10
San Francisco - Ray Durham was 2-for-4 with a double, a home run and 3 RBI as San Francisco scored four in the fifth and six more in the sixth to move past the Florida Marlins.