Royals starter James Shields (13-9, 3.15 ERA) went seven innings, allowed one run on four hits while striking out 10 over seven innings.
The Royals jumped out to a three run lead in the first inning against Sale (11-14, 3.07 ERA).
Lorenzo Cain added an RBI single to give the Royals a 3-0 lead.
Jamey Carroll doubled and scored on Bonifacio’s single in the fourth to push the Royals’ lead to 4-0.
In the sixth, Alex Gordon hit an RBI double and Bonifacio added his second RBI single of the night to put the Royals ahead 6-0.
Sale gave up four earned runs on nine hits, struck out five and walked one over 5 1/3 innings.
Sox second baseman Gordon Beckham added his fifth homer of the season in the bottom of the sixth for the lone Sox run.
The Sox have lost 22 of their last 28 and must win one of their final two games against the Royals to avoid a 100 loss season.