It was his first shutout victory since Aug. 6, 2010, and third in his career. Wainwright (3-5), who missed the 2011 season with elbow ligament replacement surgery, struck out nine and walked one while throwing 111 pitches. He retired the first eight batters and allowed just one runner to reach third base.
Edinson Volquez (2-4) gave up five hits and three runs in six innings. The former Cincinnati Red remains winless in St. Louis. He is 0-3 in four career starts at Busch Stadium with a 6.50 ERA.
St. Louis took a 1-0 lead in the first inning. Matt Carpenter hit a double to left field and appeared to hurt himself as he left the batter's box. Daniel Descalso came in to run for Carpenter and scored on Beltran's two-out single. Descalso stayed in the game at third base for Carpenter, who experienced ''right side tightness,'' according to a club spokesman.
Descalso scored on a bang-bang play at home in the sixth. He was hit by a pitch leading off and went to third on a seeing-single between first and second by Holliday. Beltran rapped a sharp grounder to first baseman Yonder Alonso. Descalso came halfway down the line. Alonso threw to third baseman Andy Parrino. Descalso headed home and slid in safely before San Diego catcher Nick Hundley made the tag after getting the throw from Parrino. Hundley did not have the plate blocked.
With the bases loaded, one out and the infield in, Tyler Greene hit a hard grounder to shortstop Everth Cabrera, who bobbled the ball before pushing it to get the force at second. Holliday scored on the play, making it 3-0.
Holliday gave St. Louis a 4-0 lead in the seventh off reliever Alex Hinshaw when he doubled home Rafael Furcal.
Hundley threw out his major league-leading 15th would-be base stealer when he nabbed rookie Adron Chambers in the fifth inning. Chambers was called up from Memphis last Friday to fill in for the injured Allen Craig. Chambers made his first start as a big-leaguer, hitting eighth and playing center field.
Notes: St. Louis reliever Kyle McClellan said he will not need surgery on his sore right elbow. He said he hopes to begin throwing in six weeks. ... Cardinals 3B David Freese sat out his second consecutive game. Freese is mired in a 6-for-42 slump over the last 12 games. His batting average has dropped from .312 to .259 since May 9. ... San Diego 3B Chase Headley did not start Tuesday because of a lower back issue. He had started 42 of the Padres' 43 games. ... it was the 100th career start for Volquez. ... Cabrera went 0-for-3, extending his hitless slump to 17 consecutive at-bats.
Link to boxscore: St. Louis 4, San Diego 0