Bumgarner (11-5) bounced back from his first loss in more than five weeks. He was staked to an early 4-0 lead and the only run he allowed came on Chris Snyder's homer in the seventh.
Buster Posey hit a two-run shot to put the Giants in front in the first inning and they struck for two more in the second. Joaquin Arias drove in one of the second-inning runs with a single and another scored on a ground out by Justin Christian.
Angel Pagan added a sacrifice fly in the eighth.
Wandy Rodriguez (7-7) took the loss, giving up the four early runs on seven hits in a six-inning effort.