Salvador Perez hit a three-run homer and the Kansas City Royals completed a three-game sweep of the Chicago White Sox with a 6-3 win Sunday.
James Shields (8-3) won his fifth straight decision and the Royals extended their season-high win streak to seven games. He pitched out of trouble throughout his outing.
Shields allowed three runs and scattered 10 hits in six innings. Greg Holland pitched a scoreless ninth for his 20th save in 21 chances.
The Royals haven't lost with Shields on the mound since May 2, and he's 5-0 in eight starts because of the Royals' 42 runs of support.
Eric Hosmer also hit a two-run home run for the Royals.
Alejandro De Aza had a two-run double for the White Sox, who lost their fourth straight game. Starter Andre Rienzo (4-4) allowed six runs on six hits in six innings.
The White Sox have lost 10 of their last 11 home games against the Royals been outscored 53-20 in them.
With one out in the first inning, Hosmer connected on a 1-2 pitch for a two-run shot to center. It was his fourth of the season.
With the Royals up 2-1 in the third inning with two outs, Billy Butler was hit by Rienzo's pitch. Alex Gordon drew a walk then Perez followed with a tape-measure home run to left, giving the Royals a 5-1 lead. It was Perez's seventh of the season.
Mike Moustakas scored from second on Jarrod Dyson's RBI single in the fourth inning after he was initially ruled out on a force at second base. The call was overturned after a challenge.
Adam Eaton led off the first inning with a hard grounder that went underneath Hosmer's mitt at first. Eaton wound up with a stand-up triple. One pitch later, Shields appeared to have Eaton picked off at third base, but plate umpire Paul Emmel ruled that Shields did not step off the rubber and awarded Eaton home. Royals manager Ned Yost argued the balk and was tossed by Emmel as he was headed back to the dugout. Yost then confronted Emmel for another animated conversation before leaving the game.
De Aza had a two-run double off Shields in the fourth inning.