CHICAGO -- A one-two-three first inning offered a pretty good clue that Royals right-hander James Shields was in for a good night on Friday.
Shields (5-7) went on to scatter eight hits over seven shutout innings to lead the Kansas City Royals to a 5-1 victory over the Chicago White Sox in the opener of a three-game weekend series.
"The record doesn't tell a quarter of his story," said Royals manager Ned Yost. "Tonight was good -- he got a 'W' and he pitched great."
The Royals won their fourth straight and now are just two games under .500.
"It's nice to get a one-two-three in the first inning and I felt pretty good for the most part," said Shields, who struck out two and walked a pair. "Early in the game I was throwing a lot of strikes and attacking the zone. I was missing some spots later in the game but for the most part I was consistent."
Kansas City got an early run on David Lough's solo home run to open the third inning. The Royals doubled the lead in the seventh when Miguel Tejada's one-out sacrifice fly drove home Salvador Perez from third.
Chicago had its most serious threat with the bases loaded and two out in the sixth for catcher Josh Phegley. But the Royals got out of the inning as Phegley grounded to third on a fielder's choice.
White Sox starter Jose Quintana (5-3) worked an efficient seven innings, allowing two earned runs on six hits. He threw 106 pitches, walked just one and struck out five.
"It was a close game but my arm felt good, I had some good pitches," Quintana said through a translator. "(The home run) was just bad location and I felt like it was the right pitch to throw. Those things happen."
Chicago manager Robin Ventura said it was a hard-luck night for Quintana and his team, which has now lost four of its last five.
"He doesn't really get what he deserves, but he was sharp," Ventura said. "And tonight offensively guys were hitting it, swinging hard. Gordon (Beckham) hit two right on the nose. That's just the way it goes unfortunately ... and late it kind of just unraveled."
Right-hander Kelvin Herrera relieved Shields and gave up an eighth inning solo home run to Conor Gillaspie that briefly trimmed the Royals lead in half.
But Kansas City added two ninth inning runs off Chicago reliever Matt Lindstrom.
The first came on Lorenzo Cain's single to center that scored Jarrod Dyson with no outs. Lindstrom departed after allowing a single to Mike Moustakas to right that drove home Perez.
"I felt like I had to find a way to get that run in," Cain said. "It was definitely a big at-bat."
Left-handed reliever David Purcey was on the mound as the Royals scored one more run on an error by White Sox left fielder Casper Wells. He misplayed a line drive on rookie outfielder David Lough's one-out sacrifice and brought Cain home.
Lough's lead-off homer gave the Royals a 1-0 lead in the third. He lined a 2-2 pitch an estimated 388 feet to right field.
The teams were heading in opposite directions as they hit the 100-game mark for the season on Friday.
The White Sox, last in the AL Central, snapped a three-game losing streak with Thursday's 7-4 victory in the finale of a four-game series with Detroit. The Royals, seven games behind the division-leading Tigers, are now 6-2 since the All-Star break.
"We've got intensity since the break," Yost said. "We started playing very well and they're starting to believe in their abilities."
NOTES: Kansas City is starting a nine-game road trip that will make stops in Minnesota and New York as the Royals play the Mets before returning to Target Field against the Twins on Aug. 5. ... It's Kansas City's first trip to Chicago since the opening series of 2013 when the Royals dropped two-of-three in frigid conditions. ... Ten of Shields' 22 starts have been no-decisions, including a run of five straight from June 1-23. ... The White Sox reached their 100th game safely over the 1 million mark in home attendance. Chicago reported 1,064,501 fans through the turnstiles through 46 home dates and could draw 1.8 million if the current 23,041 per game average holds. ... Chicago committed one error Friday to bring the season total to 71, topping the total number of errors the team committed in 2012. ... Triple-A Charlotte RHP Andre Rienzo threw a no-hitter (seven innings) and struck out 11 Thursday night in the first game of a doubleheader against Indianapolis. ... Adam Dunn entered Friday's game needing one home run to tie Cal Ripken for 43rd place all-time with 431. Teammate Paul Konerko needed two to match Ripken.