Giants 4, Cubs 1
San Francisco - Matt Cain outpitched and even outslugged opposing starter Carlos Zambrano, shutting down Chicago for seven innings and hitting his second career home run to lead San Francisco.
Cain, who came into the game with the third-lowest run support in the National League, figured out a way to fix that problem by homering for the second time this month. Cain (6-13) has won three of his last four starts - including both starts he homered in - after winning just three of his first 22 this season.
That the home run came off Zambrano (14-10) must have been especially sweet since the Cubs' ace is second to Mike Hampton among active pitchers with 12 career longballs.
Cain's big day on the mound and at the plate helped San Francisco avoid being swept by the Cubs in a three-game series for the first time since 1994 and snapped a six-game home losing streak. The Giants hadn't lost seven in a row at home since September 1993, when they still played in Candlestick Park.
The Cubs had their lead in the NL Central cut to a half-game over the idle Milwaukee Brewers.
Giants slugger Barry Bonds got the day off.
Dodgers 5, Phillies 2
Philadelphia - Chad Billingsley struck out seven in seven sharp innings to earn his first victory in a month.
Marlins 11, Cardinals 3
St. Louis - Josh Willingham homered twice with a career-best six RBIs, including a grand slam. Albert Pujols was 0-for-3 with a popup, line out to center and groundout, ending his streak of homering in a career-best five consecutive games.
Pirates 5, Rockies 1
Denver - Josh Phelps had three RBIs and four hits.
Reds 9, Braves 7, 12 inn.
Cincinnati - Adam Dunn hit a two-run homer in the 12th inning to send Cincinnati to its third straight victory.
Padres 9, Mets 8, 10 inn.
New York - Adrian Gonzalez homered in the 10th inning, and San Diego outlasted New York in a game that included blown saves by Billy Wagner and Trevor Hoffman.
Nationals 7, Astros 6
Houston - Ronnie Belliard capped a five-run first inning with a two-run homer.