SAN FRANCISCO -- Adam Wainwright will take the victory and run.
On a night he managed only a season low for strikeouts, the St. Louis right-hander still found ways to dominate.
"To come away with a way on a night I walked the pitcher, I'll run out of here," Wainwright said. "That was a big win for us."
Carpenter had three hits and drove in a run, improving to .520 (26 for 50) against the Giants to help the Cardinals end a three-game losing streak. Matt Holliday added two hits and an RBI.
"I don't think there is any rhyme or reason to it," Carpenter said. "I stay with the same approach and just try to help the team."
Wainwright (11-4) took over the NL lead in ERA (1.89) and victories. He walked two and struck out one and his infielders combined to record 18 outs.
"I was aware of that," Wainwright said. "I'm getting outs, so why change? When you start thinking about strikeouts, then you start going deeper into counts. Guys were making great plays and laying out left and right."
Joe Panik, who had two hits, was the lone Giant to venture past first base, reaching third with two outs in the sixth and again with two outs in the eighth.
Ryan Vogelsong (5-5) gave up two runs on six hits over seven innings. He walked one and struck out eight.
Vogelsong lost his second successive start despite a 2.08 ERA with a walk and 15 strikeouts over that span.
"He had all his pitches going, good tempo out there," Giants manager Bruce Bochy said. "For him to give up two runs, seven innings, that's a great job."
The Cardinals ended a 26-inning scoreless streak by scoring twice in the third. Oscar Tavares doubled and Mark Ellis singled. After a strikeout, Carpenter and Holliday each singled in runs.
Carpenter has hit safely in 14 of his 16 games against the Giants.
"We're still trying to figure out a way to score runs," Cardinals manager Mike Matheny said. "Those were big RBIs there. It lets Wainwright do what he does. It's no secret he's the guy we want on the mound."
Vogelsong retired 10 of the final 11 batters he faced, allowing one hit the rest of his outing.
"It doesn't matter, it's a loss," Vogelsong said. "I'm tired of talking about stuff. It's all about wins and losses now and getting to the playoffs. It doesn't matter what the stuff is. It's about getting wins."
Trevor Rosenthal got the final three outs for his 25th save in 28 chances after giving up an infield hit to Hunter Pence to start the ninth. Pence was originally ruled out, but the call was reversed following a review.
Tavares made his first MLB appearance in CF. ... Cardinals RHP Joe Kelly (left hamstring strain) will make at least one more rehab start. ... RHP Carlos Martinez (1-3, 4.13) gets the start for the Cardinals on Thursday. The Cardinals are unbeaten in his first three starts. ... LHP Madison Bumgarner (9-5, 2.90) starts for the Giants in the series finale. He's 3-3 in six career starts against the Cardinals. ... Giants OF Angel Pagan (lower back strain) will receive an epidural Thursday morning in Los Angeles before rejoining the team. He'll rest through the weekend. ... Giants 1B Brandon Belt (thumb) is expected to be activated from the DL when the Giants open a series in San Diego on Friday. ... Cardinals 1B Matt Adams went hitless in four at bats, ending a career-best eight-game hitting streak.