Sale pitched eight innings with a mere four singles and one walk marked against him. Shields, the Royals' right-hander, worked seven innings marred by just one run on five hits and no walks, although he hit two batters.
The 29,760 fans on an overcast, 62-degree afternoon saw the Chicago club salvage the final game of three from the Kansas Citians.
It was difficult to determine which starting pitcher was really best.
"What we saw out there today was two No. 1 starters at the top of their game. Both of them had their 'A' game on the mound," Royals manager Ned Yost said.
"That's as good a stuff as I've seen James Shields have. He had everything working -- his fastball at 94, 95 [mph]. A great cutter, great changeup, great curveball. And Sale was right there with him. He had everything going. Both starters just pitched a great game."
White Sox manager Robin Ventura noticed how Sale literally threw himself into his job.
"There was an energy to him the way he was throwing, coming off the mound," Ventura said. "Big pitchers do that when you face up against another guy like Shields, there is a little extra incentive you get against a guy like him. Both of them had it today. I'm glad Chris came out on top."
Yost gave some thought to extending Shields into the eighth inning, but he'd thrown 102 pitches so he switched to right-hander Kelvin Herrera, who contributed a 1-2-3 inning.
"Today was a tough day," Shields said. "You've got another pitcher on the other side that's pretty good. Anytime he's on his game, he's pretty tough to beat. I tried to go toe-to-toe with him."
The only dent against either pitcher came in the White Sox seventh when Conor Gillaspie drilled a one-out double along the right-field line, took third on a groundout and scored on Alexei Ramirez's single that shortstop Alcides Escobar couldn't handle in the vicinity of second base.
"I made a pretty good pitch to Ramirez right there and it just kind of went up the middle," Shields said. "We had him shaded toward the 6-hole so it was a tough out over there."
The Royals really threatened Sale only in the third when singles by Lorenzo Cain and Omar Infante, plus an error, put runners at second and third. But there were two out and Danny Valencia, playing his first game for the Royals, popped out.
They just couldn't solve Sale.
"We knew one run was going to win," Eric Hosmer said. "We were doing everything we could to scratch one across, but we've got do a better job of figuring out how to do that next time. Today wasn't the day."
Sale acknowledged that he was totally involved in beating the Royals.
"I was just trying to use everything I had towards the plate and keep my team in it," Sale said. "You come into this stadium and you face this team, you know what you're getting, and with Shields on the mound, you know what you're getting with him too, so you just kind of crank it up a little bit and get it going."
There was a hint of hostility in the air during the sixth inning after Shields struck Jose Abreu with a pitch. When Infante led off the bottom half for the Royals, Sale sent him backing far off the plate with a pitch. Plate umpire Greg Gibson immediately warned the teams against any further heat warnings.
Shields thought it was minor ado about nothing.
"I'm not trying to hit Abreu there. In a 0-0 ballgame, I'm not trying to put a runner on base," he said.
Shields noted that in the fourth inning, after Abreu had inadvertently stomped on Hosmer's foot during a play at first base, he'd gone over to make sure all was well with the White Sox batter. He inquired again in the sixth.
"When I hit him, after that, I went over to be sure everything was OK. There was definitely no intent right there," Shields said. "I understand they're trying to protect their players but, in that situation, I wasn't trying to hit him and I don't think there was any reason for any retaliation at all."
The sixth was a very busy inning. There also was an instant replay challenge at first base by each manager -- Yost won his first case for the Royals and White Sox manager Robin Ventura lost his appeal.
And the ninth inning was busy, too, as the batters -- so frustrated against Sale and Shields -- took out their ire on the relief pitchers.
The White Sox jumped on left-handers Tim Collins and Francisley Bueno for four runs in the ninth. Collins gave up a hit, two walks and a stolen base. Bueno surrendered an RBI double to Ramirez and a two-run single to Tyler Flowers.
With Matt Lindstrom on for Sale, the Royals created a three-hit stir with Alex Gordon delivering an RBI single, but that's as far as it went.
"You always want to be that guy to drive in a few runs for your team, but none of us got it done today," Cain said. "It was a pretty tough day for all of us."