The Royals were coming off their first win in nine games, a victory over St. Louis in Kansas City that did not end until 3:14 a.m. Friday.
The Rangers took advantage of the sleep-deprived Royals by pounding out 14 hits that gave them their American League-leading 34th victory of the season.
Derek Holland (5-2) worked around eight hits and struck out eight over seven innings to get the win.
Texas trailed 1-0 heading into the bottom of the third, but Adrian Beltre singled in the tying run and Cruz launched his 13th of the season to put the Rangers in front 4-1.
Leonys Martin added a two-run double in the sixth and Beltre contributed a solo homer in the seventh.
Wade Davis (3-5) was charged with the loss after giving up six runs on 10 hits in five innings.
Senate Democrats to pull all-nighter on climate change
Interpol investigating stolen passports on missing flight