KANSAS CITY, Mo. (AP) (AP) - Adam Eaton homered and scored three times, and the Chicago White Sox beat the Kansas City Royals 7-5 on Sunday for their fourth straight win.

Eaton collected three more hits and is batting .517 (15 for 29) in his last seven games. Erik Johnson (1-0), one of Chicago's top prospects, pitched six innings of three-run ball in his first major league appearance of the season.

The AL-leading Royals were swept at home for the first time this season. Johnny Cueto (2-5) was pulled after three innings in his fourth straight loss.

More from FoxSports

Kansas City pulled within one with two runs in the seventh. But Eaton doubled and scored on Jose Abreu's sacrifice fly in the ninth, and David Robertson got three outs for his 29th save.

Johnson, who was the International League most valuable pitcher after going 11-8 with a 2.37 ERA with Triple-A Charlotte, allowed five hits, including homers for Salvador Perez, Jarrod Dyson and Mike Moustakas.

Cueto, who was acquired in a July 26 trade with Cincinnati, was charged with five runs and seven hits. It was his shortest outing since June 28, 2013, when he left after one inning at Texas and went on the disabled list the next day.

Cueto is 0-4 with a 9.45 ERA during his losing streak, yielding 21 earned runs and 37 hits in 20 innings.

The White Sox scored three runs before making an out. Jose Abreu singled in Eaton, and Avisail Garcia drove in two runs with a base hit.

Chicago tacked on two more runs in the third on Adam LaRoche's RBI single and Rob Brantly's sacrifice fly.

Eaton added his 12th homer with one out in the sixth. The speedy leadoff hitter had six career homers in 211 games coming into the year.

Perez's second-inning homer was his team-leading 19th. Dyson and Moustakas went deep in the sixth.

TRAINER'S ROOM

White Sox: Eaton is dealing with shoulder discomfort. "He's had something nagging him here and there, but it's nothing to keep him out of the lineup," manager Robin Ventura said. He acknowledged trainer Herm Schneider is doing some "maintenance" work on Eaton.

Royals: RHP Ryan Madson (arm fatigue) pitched for the first time since Aug. 22 and gave up a run in the ninth. . Moustakas (hamstring pull) started for the first time since Aug. 30.