St. Louis Chase Utley extended his hitting streak to 33 games with a 2-for-5 night, and Ryan Howard homered and had three RBIs in Philadelphia's 5-3 victory over St. Louis.
The Cardinals have lost a season-worst five in a row.
Chris Coste also homered for the Phillies, who have won four of five.
Utley is batting .404 (57-for-141) to raise his average to .328 during the streak, tied for the ninth-longest in the National League with Rogers Hornsby (1922) and George Davis (1893).
Howard had a two-run single with the bases loaded in the third, then hit his NL-best 36th homer leading off the fifth for a 4-3 lead.
Brewers 1, Rockies 0
Denver - David Bush allowed five singles over six innings and Damian Miller had an RBI single in the seventh inning. Bush (7-8) hit two batters and struck out two. Francisco Cordero recorded the final four outs for his second save.
Marlins 6, Mets 5
Miami - Pinch-hitter Josh Willingham hit a two-run homer off Billy Wagner with one out in the bottom of the ninth inning. Carlos Beltran hit his fifth home run in three games for the Mets and Jose Reyes had a tiebreaking shot in the seventh inning.
Braves 4, Pirates 2
Pittsburgh - John Smoltz won his fifth straight decision and Adam LaRoche homered twice as Atlanta broke a four-game losing streak. Smoltz (9-5), who pitched seven strong innings, allowed one run and six hits while walking none and striking out six.
Dodgers 10, Reds 4
Cincinnati - Rafael Furcal drove in four runs and Wilson Betemit added a two-run homer as Los Angeles extended its winning streak to four games. Aaron Sele (7-4) allowed eight hits and four runs over six innings.
Cubs 9, Diamondbacks 3
Chicago - Rich Hill pitched eight solid innings for his first major league win and Aramis Ramirez hit one of Chicago's four homers.
Astros 1, Padres 0
San Diego - Andy Pettitte outpitched Jake Peavy in his first game in San Diego since the 1998 World Series. Pettitte (10-11) allowed five hits in six innings, struck out eight and escaped two jams. Peavy (5-11) allowed one run and six hits in seven innings, struck out three and walked one.
Nationals 4, Giants 1
San Francisco - Ryan Zimmerman hit a two-run double and Livan Hernandez won his fourth straight decision. The Giants lost their ninth straight game, the club's longest skid since dropping 10 in a row from June 21-30, 1996.