Wainwright (16-6) struck out seven and walked three in his fifth complete game and second shutout this season.

With the two-hitter, Wainwright matched his career best. The All-Star right-hander also threw one June 4 to shut out Milwaukee.

Pujols hit a three-run shot in the first inning, his fifth homer in six games and 28th this year. He doubled home a run in the fourth.

The Marlins have lost five straight games and have been outscored 25-7 in the first four games of their homestand.

Ricky Nolasco (12-8), who had won his past three starts, allowed seven runs and 10 hits, six for extra bases, over five innings.

Matt Holliday doubled home a run in the third, and the Cardinals hit four doubles — by Skip Schumaker , Brendan Ryan , Jon Jay and Pujols — in their four-run fourth.

Giants 3  Braves 2, 11 innings: At Atlanta, Pat Burrell had a sacrifice fly with the bases loaded in the 11th inning for San Francisco, which scored the tying and go-ahead runs without a hit.

The Giants moved within a game of NL West-leader San Diego, which lost 2-1 to Arizona. The Braves lead over Philadelphia fell to one game in the NL East. The Phillies beat the New York Mets 7-5.

The Giants scored the tying run in the ninth without a hit as the Braves made two errors. The go-ahead run scored when reliever Peter Moylan (3-2) walked the bases loaded ahead of Burrell’s fly ball.

Javier Lopez (3-2) picked up the win with a scoreless 10th and Brian Wilson got his 32nd save with a hitless 11th.

Diamondbacks 2 Padres 1: At Phoenix, Dan Hudson pitched into the eighth inning to outduel Jon Garland in his second start with Arizona and Adam LaRoche hit his 18th homer.

San Diego got a solid start out of Garland (10-8), but managed just three hits to lose for the sixth time in 11 games.

Hudson (2-0) gave up a solo homer to Will Venable in the third and two singles after that in 7 2-3 innings. Aaron Heilman worked the ninth for his fifth save and eighth straight scoreless outing.

Garland issued two walks with two outs in the third inning, setting up Justin Upton’s flare RBI single that put Arizona up 2-1. He walked six — one intentional — giving him 61 on the season.

Phillies 7 Mets 5: At Philadelphia, Carlos Ruiz singled in the go-ahead run during a six-run eighth inning in Philadelphia’s fifth straight win.

Chad Durbin (3-1) tossed a scoreless inning for the win. New York’s Bobby Parnell (0-1) didn’t retire any of the four batters he faced in the eighth.

After pinch-hitter Mike Hessman hit a three-run homer off J.C. Romero with two outs in the ninth, Brad Lidge got the final out for his 13th save.

The Phillies rallied against Parnell and Pedro Feliciano in the eighth. Newly acquired Mike Sweeney led off with a single and went to third on Jayson Werth’s single.

Rockies 6 Pirates 3: At Pittsburgh, Troy Tulowitzki hit a tiebreaking RBI single with two outs in the seventh and Colorado snapped a seven-game road losing streak.

Tulowitzki and Carlos Gonzalez both had three hits for the Rockies, who have won six of eight overall. Jason Hammel (8-6) pitched six solid innings to win for the first time since July 10.

Rookie Pedro Alvarez hit a three-run homer for the last-place Pirates, who have lost 11 of 15.

Hammel allowed three runs and three hits. He was 0-3 with a 5.33 ERA in his previous four starts.

Matt Belisle , Joe Beimel and Huston Street combined to finish up, with Street earning his seventh save.

Reds 3  Cubs 0: At Chicago, Bronson Arroyo allowed five hits over seven innings and Cincinnati moved 14 games over .500 for the first time in 11 years.

The Reds (62-48) got a two-run homer from Ryan Hanigan in the second inning and an RBI single from Brandon Phillips in the seventh.

Francisco Cordero survived a shaky ninth for his 30th save and the Reds’ seventh win in nine games.

The last time the Reds were 14 games over .500 was when they finished 96-67 at the end of the 1999 season at 96-67.

Arroyo (12-6) struck out seven and walked one to go 5-0 with a 1.88 ERA in his past six starts against Chicago.

Brewers 6 Astros 5: At Milwaukee, Prince Fielder hit a two-run single in the ninth inning to cap Milwaukee’s four-run rally.

Pinch-hitter Joe Inglett set up Fielder’s clutch hit with a two-run homer that got Milwaukee within one. Rickie Weeks then singled and Corey Hart walked before Fielder’s one-out hit off Matt Lindstrom (2-2).

Houston had won seven of eight overall and four straight against Milwaukee before Lindstrom squandered another sharp performance from Wandy Rodriguez , who allowed an earned run in 6 1-3 innings. It was Lindstrom’s fifth blown save.

Nationals 6 Dodgers 3: At Los Angeles, Washington’s Adam Dunn hit two three-run homers off Clayton Kershaw , tying his career-high for RBIs.

John Lannan (3-5) allowed three runs and five hits over six innings in his second start since returning from a six-week stint with Double-A Harrisburg. It was the left-hander’s first victory with the big league club since May 28 at San Diego.

Drew Storen pitched a hitless ninth for his first major league save and the Nationals’ second since trading closer Matt Capps to Minnesota on July 30. Kershaw (10-7) allowed seven hits in six innings and struck out nine.

Kern hit his 29th and 30th homers in his 29th career multihomer game. Dunn’s other six-RBI game was on May 24, 2009, against Baltimore.