Nationals 7, Pirates 6
Pittsburgh - Pittsburgh's Matt Capps had been 15-for-15 in saves and appeared headed to his third save in as many days when he got two quick outs to open the ninth. But on successive pitches Elijah Dukes doubled to right and Lastings Milledge homered to left.
Marlins 5, Phillies 4
Miami - Hanley Ramirez led off the game with one of Florida's three home runs off Philadelphia starter Brett Myers.
Cardinals 7, Reds 2
Cincinnati - Ryan Ludwick homered and drove in four runs to lead the Cardinals over the Reds.
Albert Pujols and Rick Ankiel gave the Cardinals their first set of back-to-back home runs this season before Pujols was helped off the field with a strained left calf.
Astros 6, Brewers 1
Houston - Lance Berkman homered and hit a three-run triple, and Roy Oswalt pitched seven solid innings for his first win in almost a month to lead the Astros over the Brewers.
Berkman's 19th homer of the season, off Seth McClung (3-3), scored Miguel Tejada to give Houston a 2-0 lead in the first.
Cubs 10, Braves 5
Chicago -Ted Lilly settled down after a shaky start to get his first win in three weeks, and Derrek Lee and Geovany Soto homered as the Cubs continued their dominant play at Wrigley Field.
The NL Central-leading Cubs rallied and are now 27-8 in their home ballpark this season.
Rockies 10, Giants 5
Denver - Aaron Cook threw seven efficient innings, Todd Helton hit a three-run homer and the Rockies ended San Francisco's seven-game road winning streak.
Diamondbacks 9, Mets 5
New York - Chris Snyder hit a tiebreaking homer in the eighth inning off Joe Smith, and the Diamondbacks sent the Mets to their fifth straight loss.
Dodgers 7, Padres 2
San Diego - Russell Martin and Matt Kemp drove in two runs each in a four-run seventh inning as the Dodgers took advantage of shoddy outfield play.