The victory also snaps a seven-game losing streak for Kansas City (65-64).
Alex Gordon led off the bottom of the first inning with his 14th home run of the season off Dan Haren. After an Eric Hosmer RBI single, Salvador Perez hit the second home run of the inning -- a two-run shot -- to anchor Kansas City to a four run lead.
Washington fought back with a trio of home runs -- solo shots for Ian Desmond and Denard Span, two-run jack for Bryce Harper -- that tied the game in the seventh inning.
Ervin Santana gave up all four runs on 11 hits through 6 2/3 innings. He took a no-decision.
Perez drove in the go-ahead run in the eighth with a bases loaded infield single. David Lough added another RBI single to cushion the lead.
Kelvin Herrera got the win getting one out in the seventh, then pitching a scoreless eighth inning.
Greg Holland gave up two hits in the ninth inning, but struck out the side to record his 35th save.
Perez finished with three RBI. He and Jarrod Dyson led the Royals with two hits apiece. All nine batters for Kansas City finished with a hit.