SAN FRANCISCO, May 17 (UPI) -- Brandon Belt scored the go-ahead run in the sixth on a St. Louis mistake Thursday and added an RBI double, pushing San Francisco past the Cardinals 7-5.
St. Louis committed three errors leading to three unearned runs while suffering its second straight loss and its fifth setback in seven games.
The Cardinals held a 4-3 lead when Angel Pagan opened the San Francisco sixth with a single off starter Adam Wainwright (2-5). Pagan went to third on a double by Belt and then scored the tying run on a sacrifice fly by Emmanuel Burriss.
With one away and Belt still on second, St. Louis third baseman David Freese committed a throwing error on a grounder from Aubrey Huff, allowing Belt to score.
Belt doubled home Buster Posey in the seventh and the Giants added another run in the inning when Pagan raced home on a fielder's choice grounder by Charlie Culberson.
Matt Cain (3-2) collected the win despite allowing four runs in six innings. Santiago Casilla struck out one in a perfect ninth for his ninth save.
Matt Holliday and Yadier Molina homered for the Cardinals.