Ryan Ludwick added a two-run shot off Aaron Harang (2-5) that also cleared the wall, sparking an offense that hadn't homered in the previous nine games.

St. Louis starter Jaime Garcia (4-2) has gone at least six innings and given up two or fewer earned runs in all seven starts. It's the best such opening streak by a rookie since the L.A. Dodgers' Fernando Valenzuela did so in eight games in 1981.

In San Diego, Matt Kemp hit a two-run homer in the seventh inning that a frustrated Tony Gwynn Jr. got his glove on as it sailed over the wall, sending Los Angeles to a win over the NL West-leading San Diego.

Gwynn leaped at the center-field wall to take a stab at Kemp's fly ball, but it hit the end of his glove and went over. After he came back down, Gwynn punched the padded wall.

The Dodgers won their fifth straight while the Padres had their three-game winning streak snapped.

Kemp's homer off Luke Gregerson (0-1) came with Russell Martin aboard on a double. It ended Gregerson's scoreless streak at 16 1-3 innings.

In Miami, Dan Uggla hit two of Florida's four homers and drove in four runs, leading Florida over New York.

Chris Coghlan hit the first home run by a left-handed batter for Florida this season, and Gaby Sanchez also connected. The Marlins got more than four runs for the first time in 10 games and scored first for only the second time in the past 14, building a 7-0 lead.

All the homers came off struggling Mets starter Oliver Perez, matching his career high. He had given up only one previously this season.

New York managed only two runs against Marlins starter Anibal Sanchez (2-2), who pitched seven innings and struck out seven.

In Milwaukee, veteran pitcher Jamie Moyer overcame giving up three homers in one inning to steer Philadelphia past Milwaukee.

The 47-year-old Moyer (5-2) continued his strong season start, only struggling briefly when Prince Fielder, Jim Edmonds and George Kottaras all hit solo homers in the second to tie the game.

Ryan Howard hit a two-run shot while Raul Ibanez and Chase Utley hit solo homers for the Phillies. Ibanez hit his homer and Shane Victorino drove in two with a triple in the fourth off Randy Wolf (3-3) to give the Phillies a 6-3 lead.

In San Francisco, Andres Torres had an RBI triple, doubled in a run and scored twice as San Francisco snapped Houston's four-game winning streak.

The Giants produced the timely hits they lacked in recent days.

San Francisco starter Todd Wellemeyer (2-3) pitched into the eighth inning to help the Giants bounce back from a three-game sweep by San Diego and improved to 4-0 against the Astros this season.

Hunter Pence hit a solo homer in the fourth for one of his two runs. Matt Downs had an RBI double, Aubrey Huff and Nate Schierholtz singled in runs and Pablo Sandoval had an RBI groundout for the Giants.

In Atlanta, Martin Prado's bases-loaded bloop single drove in two runs in the bottom of the ninth inning to lift Atlanta over Arizona.

Arizona closer Chad Qualls (0-2) couldn't hold a 5-4 lead in the ninth. It was his third blown save in nine chances, and the Diamondbacks' bullpen is only 7 for 15 in save opportunities.

Eric Hinske led off the ninth with a single against Qualls. Omar Infante's bunt single moved pinch-runner Brandon Hicks to second and Nate McLouth's sacrifice left runners on second and third with one out.

Qualls issued an intentional walk to Melky Cabrera to load the bases before Prado punched the game-winning hit into shallow right.

In Chicago, Andrew McCutchen and Garrett Jones both homered and set career highs with five hits each as Pittsburgh downed Chicago.

The Pirates broke loose at the plate after four straight losses and back-to-back shutouts at Cincinnati. They scored three runs in the first inning, then rallied from a 6-4 deficit.

Jones also doubled and drove in five runs. He broke an eighth-inning tie with a three-run homer off Carlos Zambrano.

McCutchen scored five times, stole two bases and hit a solo home run in the ninth.