The Giants won their third straight and Bumgarner finally received enough support to pick up a victory.
Bumgarner (3-8) has given up three runs or less in 10 straight starts and this was only his third victory in that span. He allowed two runs on five hits to the Diamondbacks.
Santiago Casilla and Sergio Romo each worked a 1-2-3 inning in support of Bumgarner and Brian Wilson came on in the ninth for his 20th save.
Wilson allowed a two-out double and then issued a walk before getting Juan Miranda on a ground ball to end the game.
Bill Hall singled in a run to put San Francisco in front at 3-2 in the sixth. Eli Whiteside had an RBI triple in the ninth and then scored on a wild pitch.
Starter Joe Saunders (3-7) gave up three runs on eight hits in seven innings to take the loss.