SAN FRANCISCO -- Matt Cain pitched six-hit ball into the seventh inning and the San Francisco Giants beat the St. Louis Cardinals 4-2 on Friday night.
Pablo Sandoval drove in a pair of runs for the Giants, who won their fourth straight and fifth in six games overall. Fred Lewis and Emmanuel Burriss also drove in runs.
Albert Pujols had two hits and scored a run for the Cardinals, who lost for the third time in 10 games. Colby Rasmus drove in a run and Ryan Ludwick, in his first game back off the disabled list, scored on a throwing error.
Cain (6-1) gave up two runs -- one earned -- on six hits in 6 1-3 innings. He walked two and struck out five. He's won his last four decisions.
Joel Pineiro (5-5) pitched a season-low four innings, allowing four runs on six hits with a walk and three strikeouts.
Cain has pitched at least six innings in all 10 of his starts and allowed two or fewer runs in eight of them. He retired nine of the first 10 batters he faced.
Jeremy Affledt got the final two outs of the seventh, Bob Howry pitched a perfect eighth and Brian Wilson pitched the ninth for his 11th save in 14 chances.
Pineiro hasn't had much success at the Giants' new ballpark in two starts. He's given up 10 earned runs in 7 2-3 innings here. He was looking to become the first pitcher since Greg Maddux in 1995 to record five straight starts of no walks and no home runs.
Aaron Rowand, who has hit safely in all nine games since assuming the leadoff spot, doubled to open the first. With one out, Randy Winn walked and Bengie Molina was hit by a pitch.
Sandoval, after missing the past four games with tightness in his right elbow, singled home two runs to put the Giants ahead, 2-0.
Lewis tripled in a run and scored when Burriss singled to give the Giants a 4-0 edge in the fourth.
Pujols singled and Ludwick walked with one out in the sixth. After Rasmus singled home a run, a throwing error on an attempted double play allowed the second run to score, cutting the Giants lead in half.