The Royals erased a 3-2 deficit in the seventh on Eric Hosmer's sacrifice fly, and then grabbed the lead in the eighth. After Oakland's Ryan Cook (1-2) retired the first two batters in the eighth, Miguel Tejada reached on an error by A's shortstop Adam Rosales.
Cook then issued back-to-back walks to Mike Moustakas and Elliot Johnson, loading the bases, before Dyson delivered a hit to right-center field, plating Pinch-runner Alcides Escobar with the go-ahead run.
Aaron Crow (6-3) earned the victory and Greg Holland struck out the side in the ninth for his 20th save as the Royals posted their first win in five games against the A's this season.
Moustakas cracked a solo homer and Billy Butler drove in a run for Kansas City.
Josh Donaldson went 2-for-3 with a solo homer and two RBI for the A's, who came into the game with a half-game lead over the Texas Rangers in the American League West.