Pirates 7, Cardinals 1
Pittsburgh — Zach Duke limited St. Louis to three singles over eight innings after giving up a homer to Albert Pujols in the first, and Pittsburgh ended an eight-game losing streak.
Giants 9, Nationals 7
San Diego — Pablo Sandoval slugged a three-run homer with two outs in the ninth. Ryan Zimmerman extended his hitting streak to 30 games with a first-inning single for the Nationals, who have lost nine straight to the Giants.
Mets 4, Braves 3 (10)
New York — Carlos Beltran drew a bases-loaded walk from Jeff Bennett with two outs in the 10th inning. Beltran also scored the tying run in the ninth for the Mets, who have won eight of nine. They were down 3-0 in the eighth but fought back to improve to 1-11 this season when trailing after seven innings.
Reds 3, Diamondbacks 1
Phoenix — Brandon Phillips homered and drove in two runs, and Micah Owings dominated his former teammates.
Phillies 5, Dodgers 3
Philadelphia — Chan Ho Park had his second straight effective outing to win his first game with Philadelphia, and Jayson Werth stole home. Park (1-1) has rebounded nicely after a dreadful start.
Rockies 12, Astros 1
Denver — Ian Stewart hit a grand slam and a solo shot, and Ubaldo Jimenez pitched seven sharp innings. Stewart’s second career grand slam came on a fastball from Astros reliever Tim Byrdak in the fifth inning. His five RBIs tied a career high.
Cubs 6, Padres 2
Chicago — Milton Bradley hit a towering two-run homer off Jake Peavy, and Rich Harden pitched six sharp innings.
Alfonso Soriano and Kosuke Fukudome each had two doubles and three hits, Bobby Scales added his first major league home run and Harden won his fourth straight decision for the Cubs.
Brewers 6, Marlins 3
Milwaukee — Prince Fielder hit a pair of two-run homers, and Rickie Weeks and Mike Cameron hit solo shots.