Bumgarner (13-7) -- who leads the National League with a 1.87 ERA in home games -- limited the Nationals to one run on five hits and a walk and recorded six strikeouts.
Brandon Belt had three hits and drove in three runs for the Giants, who have won eight of their last 12 games.
Jordan Zimmerman (9-7) took the loss for Washington, which has lost two of its last three games following an eight-game winning streak. Zimmerman gave up a pair of runs on eight hits over 5 2/3 innings.
Bumgarner nursed a 2-1 lead into the eighth inning, when the Giants scored four runs to give him some breathing room.