Davis (6-9) registered his second win in three starts, limiting the Marlins to two runs on six hits. The right-hander walked two and struck out three.
The Royals broke open a 2-2 tie with three runs in the sixth, triggered by Alcides Escobar's run-scoring triple.
Billy Butler clouted a solo homer while Chris Getz went 3-for-4 with an RBI for Kansas City, which logged its 19th win in 24 games since the All-Star Game break and jumped over Cleveland into second place in the AL Central at 62-54.
Miami's Tom Koehler (3-8) was tagged for five runs on nine hits in a 5 1/3-inning effort.
Greg Dobbs went 2-for-3 with an RBI for the Marlins, who dropped the opener of a three-game series.