It is probably too late for the Chicago White Sox in terms of reaching the playoffs, but they are on a hot streak.

Adam Eaton homered and scored three times as the White Sox beat the Kansas City Royals 7-5 on Sunday for their fourth consecutive win.

"Kansas City's a high-quality baseball team," Eaton said. "It's good to take three from a very, very good team."

The White Sox had lost their first six games at Kauffman Stadium before sweeping the Royals.

"It shows kind of our inconsistency this year," Eaton said. "This last month of the season, we've got to empty whatever's left in the tank and I hope this three-game series can kind of foresee what we can do for the rest of the month."

David Robertson worked a flawless ninth for his 29th save. He has retired 25 consecutive batters.

"We're the streakiest team I've ever been on in my life," Robertson said. "We go from winning five or six to losing five or six."

Erik Johnson pitched six innings of three-run ball for the victory in his first major league appearance, allowing three solo homers.

"Since he's been back, even from spring training, we're seeing a confident guy, even from the solos," White Sox manager Robin Ventura said. "When you have a lead you can get away with some solo homers. I thought he was fantastic."

The AL-leading Royals were swept at home for the first time this season. Johnny Cueto (2-5), acquired in a trade July 26 with Cincinnati, was pulled after three innings in his fourth loss in a row. "I'm a little bit disappointed I haven't been able to help the team the way I was supposed to," Cueto said through an interpreter.

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.