Adam Wainwright pitched a two-hitter for his 16th victory, Albert Pujols homered and the St. Louis Cardinals beat the reeling Florida Marlins 7-0 on Friday night.

Wainwright (16-6) struck out seven and walked three en route to his fifth complete game and second shutout this season. He threw 110 pitches and lowered his ERA to 2.07.

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

Pujols got St. Louis off to a fast start with a three-run shot in the first inning, his fifth homer in six games and 28th this year. He also doubled home a run in the fourth.

The Marlins played like a team deflated by the umpire's call that cost them a walk-off victory Thursday night against Philadelphia. They've lost five games in a row and have been outscored 25-7 in the first four games of their homestand.

Although the home team took a drubbing, there was plenty of cheering from the crowd of 19,223, with many fans wearing red Cardinals apparel. St. Louis, 14-7 since the All-Star break, remained a half-game behind NL Central-leading Cincinnati.

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

Nolasco trailed 3-0 before retiring a batter. He started by walking Felipe Lopez, who stole second and took third on Jon Jay's bunt single. Pujols followed with a drive to left on a 1-1 pitch.

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

Pujols and Jay each had three of the Cardinals' 13 hits.

Wainwright kept the Marlins' aggressive hitters off balance with a steady diet of breaking balls. He walked Hanley Ramirez to start the game, then retired the next eight batters before Ramirez reached on an infield hit.

That was Florida's lone hit until a bloop single by Brett Hayes to start the eighth.

Wainwright, who is 11-0 at home, improved to 5-6 on the road.

NOTES: Marlins 1B Gaby Sanchez sat out with a sore right hamstring. His status is day to day. ... Florida CF Cody Ross was given the night off. ... Marlins rookie Logan Morrison batted third for the first time. ... SS Ramirez made a diving backhanded stop and threw out Pujols in the third. ... Nolasco fell to 0-3 with a 7.06 ERA in seven games against St. Louis. ... The Cardinals improved to 41-25 in Miami.