SAN FRANCISCO (AP) -- Matt Cain has had more than his share of stellar performances that ended up without a win because of a lack of support. That's why the San Francisco Giants felt so good about picking up their star pitcher on a day he wasn't at his best.
Brandon Crawford hit a two-run single for his first RBIs since April and the Giants capitalized on shoddy fielding by St. Louis to overcome Cain's slow start and beat the Cardinals 7-5 on Thursday.
"Matt was out of sorts there early. He was just out of synch, just trying to find himself," manager Bruce Bochy said. "He got better. That shows you how tough this guy is. He ended up pitching a pretty good game. It was nice to get him a win like that with all the tough games he's worked where we couldn't get him runs."
St. Louis made three errors in a game for the second time this week with the most important coming in the sixth inning: Third baseman David Freese 's errant throw on pinch-hitter Aubrey Huff 's two-out grounder allowed Belt to score the go-ahead run.
First baseman Lance Berkman also made an error in the second inning to help lead to Crawford's two-run single. Three of the five runs scored off Adam Wainwright (2-5) were unearned.
"That's not the kind of defense we've been accustomed to seeing this year and not the kind of defense we're going to see the rest of the way," manager Mike Matheny said. "It's just one of those games."
Cain (3-2) has been plagued by poor run support for his entire career with the Giants scoring a major league-low 3.89 runs per game for him since his first big league season in 2006.
But with help from the Cardinals they managed to score five runs with Cain in the game on Thursday to make up for his rough start that included Matt Holliday 's two-run homer in the third inning. Cain won for just the fifth time in 54 career starts when he allowed four earned runs.
"It's usually the other way around," Belt said. "He's usually battling his butt off like he did today and he's not getting the run support. Fortunately today we helped him out and got him the W."
Santiago Casilla pitched the ninth for his ninth save in 10 chances.
Cain came into the game with the second best ERA at home in the majors this season, having allowed four runs in 33 innings for a 1.09 mark. He allowed as many runs in the first three innings against the Cardinals as he had in his previous four starts here.
He allowed sacrifice flies by Holliday and Freese in the first inning and Holliday's two-run homer in the third to fall behind 4-3. Cain retired 10 of the final 11 batters he faced. He allowed eight hits in six innings.
"I started out a little rough," Cain said. "I was kind of all over the place a little bit. A lot of pitches seemed like they were cutting back toward the middle. I wasn't making good quality pitches and they were taking advantage of it. The guys hung in there with me and got some runs and got the runs we needed and got the win.
Crawford doubled and scored on Buster Posey 's single in the first and then hit his two-run single in the second for the Giants, ending a string of 16 straight games without driving in a run.
Cain ended up on the winning side when the Giants scored twice in the sixth. Emmanuel Burriss tied it with a sacrifice fly and Freese's errant throw allowed the go-ahead run to score.
Wainwright allowed eight hits in 5 2-3 innings. After winning 20 games in 2010, Wainwright is still working his way back after missing last season with an elbow injury.
"Everybody keeps telling me, `Just be patient. It's coming. You're looking better and better,"' he said. "But it's tough when you're coming from where I'm coming from, the seasons I've had in the past, it's tough to hear that and not get frustrated because I expect to be great. I haven't been great but I feel like the ball's coming out better."
San Francisco added two runs in the seventh off Kyle McClellan on Belt's RBI double and Charlie Culberson 's groundout. McClellan left the game with a sore right elbow and was scheduled to go back to St. Louis to get checked out.
NOTES: Yadier Molina hit a solo homer in the eighth for St. Louis for the first run of the season off reliever Sergio Romo . ... Cardinals OF Carlos Beltran (right knee) did not start for a fourth straight game. He popped out as a pinch-hitter in the ninth. ... Lance Lynn (6-1) takes the mound for the Cardinals when they open a three-game series in Los Angeles against Ted Lilly (5-0) and the Dodgers. ... Former Oakland ace Barry Zito , who is 1-4 with a 7.24 ERA in five starts against his former team, starts the series opener of the first Bay Bridge series for the Giants against Jarrod Parker .