KANSAS CITY, Mo. -- Edinson Volquez pitched seven strong innings and Lorenzo Cain doubled home the go-ahead run in the sixth to help the Kansas City Royals beat the Chicago White Sox 3-2 Friday night.
Volquez (11-6) limited the White Sox to one run and four hits and has allowed three or less runs in seven straight starts, lowering his ERA to 3.11.
Left-hander John Danks (6-9), who has a 9-2 career record against the Royals, gave up three runs on five hits and three walks in six innings.
Cain, who tripled in the first inning but was stranded, doubled into the left-field corner to score Ben Zobrist for the initial run in the sixth. Eric Hosmer drove home Cain with a single, giving him 10 RBIs in the past 11 games.
Alex Rios, who played with the White Sox from 2009-13, laced a double to left field to score Mike Moustakas, who had walked, with the first Kansas City run in the fifth.
Jose Abreu, who has hit safely in 16 of his past 17 games, doubled home Trayce Thompson, who led off the sixth with an infield single for his first big league hit, for the first White Sox run.
Luke Hochevar, who replaced Volquez in the eighth, walked Tyler Flowers and yielded a double to Thompson to start the inning, but recovered to strike out Tyler Saladino and Abreu. Left-hander Franklin Morales retired Melky Cabrera on a fly to the right field warning track to strand the runners.
Greg Holland gave up a home run to Adam LaRoche in the ninth, but earned his 24th save in 27 opportunities.
White Sox: CF Adam Eaton left after jamming his left shoulder when he fell catching Zobrist's fly ball in the fourth inning. He is listed as day-to-day.
Royals: LF Alex Gordon (left groin strain) could rehab with Double-A Northwest Arkansas or High-A Wilmington, who are both in the playoffs, in late August or early September, if he is ready, Royals general manager Dayton Moore said.
White Sox: RHP Jeff Samardzija, who served a five-game suspension for his part in an April 23 brawl with the Royals, starts Saturday. He is 0-4 with a 5.95 ERA in four games against the Royals.
White Sox: RHP Jeremy Guthrie will make his first start since July 29, when he yielded eight runs in 5 1/3 innings in a loss to the Indians.