Haren (9-13) struck out nine and walked one. The only hit he gave up came on a leadoff single by Juan Lagares in the fourth.
The Washington bull pen surrendered two more hits over the final three innings. One of those was allowed by Rafael Soriano in the ninth on the way to his 41st save.
Ryan Zimmerman broke a scoreless tie in the sixth with his 22nd home run and Anthony Rendon drove in the other two Washington runs with a double in the eighth.
Zack Wheeler (7-5) was the hard-luck loser, having been touched for just one run on eight hits in seven innings.