Johnson (3-3) allowed four runs on eight hits and struck out nine in five innings. He is 298-163 over his 22-year career and is seeking to become the 24th pitcher in major league history to reach the 300-win mark.
Washington's Ryan Zimmerman had two home runs among his four hits and extended his hitting streak to 29 games. John Willingham and Robbie Belliard also hit home runs for Washington.
The Giants broke open the game with a 5-run fifth inning on just one hit -- a lead-off double by Pablo Sandoval. The first two runs scored on a fielding error by Willingham. Two more were forced in on bases-loaded walks by Washington starter Daniel Cabera (0-4) and the fifth on a walk by reliever Logan Kensing that made the score 8-2.
Zimmerman hit a home run leading off the sixth to chase Johnson from the game and added a three-run shot in the ninth, closing out the scoring.
Both teams scored twice in the sixth with San Francisco pushing its lead to 10-4 with Aaron Rowand and Travis Ishikawa each knocking in runs.
Mena Suvari shares her delightfully awkward Christmas card photo
Ohio crash that killed two caught on camera [VIDEO]