ST. LOUIS -- When Jake Westbrook keeps the ball down, his success rate goes way up.
St. Louis snapped a three-game skid and moved within seven of NL Central-leading Cincinnati, which lost 3-1 to Arizona. The Cardinals have 17 games left on their schedule.
San Diego lost its second consecutive game and fell a half-game behind the Giants in the NL West.
Westbrook (2-3) gave up six hits and walked three in his longest outing since he was acquired from Cleveland in a three-team deal July 31. The right-hander is 2-3 with a 3.26 ERA in nine starts with St. Louis.
"When I get ground balls, I feel like I'm doing my job," said Westbrook, who has eight quality starts with the Cardinals. "This was the first zero I put up in a long time. It feels good."
It was Westbrook's longest scoreless outing since he threw eight shutout innings on August 23, 2007, for Cleveland against Detroit.
"Eight hard-earned innings," St. Louis manager Tony La Russa said. "They're on fire over there and they're working every at-bat. It was quite a piece of work."
Westbrook recorded 16 ground-ball outs.
San Diego stranded seven runners over the first four innings and left nine on for the game. Westbrook was able to work out of jams in four of the first five innings, thanks to his sinker and some solid defense behind him.
"Obviously, he was working down in the zone," said San Diego catcher Yorvit Torrealba, who went 0 for 4. "We hit some balls hard, that's all you can do."
Westbrook struck out pitcher Tim Stauffer with the bases loaded to end the second, then struck him out again with two on in the fourth for the second out. Aaron Cunningham then hit a grounder back to the mound to end the inning.
"We had some chances but we just couldn't get to him," San Diego manager Bud Black said. "We couldn't get the hit when we needed it."
Ryan Ludwick, who was traded from the Cardinals to San Diego in the same deal that involved Westbrook, went 1 for 4 in his first game back in St. Louis.
Ludwick received a 35-second standing ovation during his first trip to the plate, and the Cardinals in the dugout also stood in appreciation of his three-plus years in St. Louis. He tipped his hat to the fans and also in the direction of the home bench.
The Padres have lost 10 consecutive games in St. Louis. Their last road win against the Cardinals came on August 7, 2007.
Matt Holliday hit a two-out RBI single off Stauffer (4-4) in the first, and the Cardinals added three more in the sixth. Pujols' hit glanced off the glove of Ludwick in right and rolled into center, scoring Skip Schumaker and giving him 105 RBI on the season.
"I feel like I executed the pitches," Stauffer said. "It just wasn't in the cards today."
Molina capped the scoring with a bases-loaded bloop single down the right-field line.
Kyle McClelland worked the ninth for the Cardinals, completing the seven-hitter.
- The Padres have been shut out nine times this season.
- San Diego pitcher Chris Young will make his first start Saturday since the opening week of the season. Young was placed on the disabled list April 7 with a strained right shoulder. He made three rehab appearances.
- La Russa said dehydration caused the right hamstring cramp that forced pitcher Chris Carpenter out of Wednesday's game. La Russa said Carpenter is fine and will not miss any time.
- Tyler Greene started at third and hit ninth. La Russa said he was playing him to give the team a spark and give Felipe Lopez some rest.