The Giants scored twice in the eighth while snapping a four-game losing streak.
San Diego scored its two runs in the first inning, but Pablo Sandoval hit a solo homer in the fourth and then scored in the sixth on a base hit by Kensuke Tanaka to tie the game.
With Luke Gregerson (4-5) on the mound in the San Francisco eighth, Tanaka singled to open the inning, stole second and took third on a ground out by Brandon Crawford.
Pinch-hitter Tony Abreu was then hit by a pitch, after which Blanco produced a ground-rule double that brought in Tanaka with the go-ahead run.
All of that made a winner out of starter Madison Bumgarner (10-5), who survived seven innings while giving up two runs on four hits with six strikeouts. Sergio Romo worked the ninth for his 21st save.
Astronomers offer more expansive view of universe
McPhee, Cokas 'working on their marriage' after affair