Salvador Perez and Bobby Witt Jr. homered, and Jac Caglianone went 4-for-4, as the visiting Kansas City Royals defeated the Chicago White Sox 7-5 on Sunday, stopping Chicago’s three-game winning streak.Carlos Estevez tempered a late White Sox rally to earn his 19th save, striking out Tim Elko with the bases loaded to end the game.Royals pitching retired 18 straight batters from the third through sixth innings before Chicago scored three runs against Tyler Richards, who allowed the first five hitters to reach base in the ninth.Chicago turned five double plays, but Kansas City regrouped to score five runs in the final three innings before holding on.Kansas City collected 16 hits. Jonathan India contributed three hits and two RBIs, Witt Jr. had two hits and two RBIs, Maikel Garcia had two hits and an RBI, and Vinnie Pasquantino had two hits.Royals starter Michael Lorenzen improved to 4-6 while spacing two runs and one hit in six innings. He walked two and matched a season high with seven strikeouts in his first victory since April 29.Lorenzen walked Mike Tauchman to open the game and retired the next two White Sox batters before Miguel Vargas hit a two-run home run to left field to give the hosts an early lead.It marked Chicago’s only hit until the team rallied for three hits in the ninth. Vargas drove in three runs for the game.