It was a matchup of 2019 All-Stars and the American League's best daytime starters. Jake Odorizzi pitched, he said afterward, about as well as he has all year. But Lucas Giolito may have pitched better than anyone has against the Twins in four years.

Giolito was absolutely dominating from his first pitch to the last, retiring 27 of the 30 batters he faced, striking out a dozen Twins and becoming, with a 4-0 three-hit victory, the first pitcher to throw a complete-game shutout against Minnesota since 2015.

"Certainly that's about as good of an effort as we've faced all year long," Twins manager Rocco Baldelli said after his team managed to hit only six pitches out of the infield all afternoon. "He's a good one, and he was on his game today."

Odorizzi got lots of soft contact, too, but his slow rollers got through the infield for hits and his pop-ups fell between fielders. Giolito's brilliance aside, Odorizzi said, his outing felt more random than regrettable.

"Today I might have had the most weak contact I had all season, and the results weren't there to go with it. But that's just how it goes sometimes," Odorizzi said with a shrug. "Their guy did great, so it really wouldn't have mattered if [I allowed] one [run] or four. But me personally, if I can get that kind of contact on a start-to-start basis, we're going to be pretty well off."

Video (01:55) Twins righthander Jake Odorizzi says he's satisfied that he didn't allow the White Sox to hit the ball hard on Wednesday, though he still allowed four runs.

That wasn't much salve for the wound of a 2-1 series loss to the third-place White Sox, an ill-timed stumble considering the teams meet again in Chicago next week and at Target Field next month. Minnesota lost a chance to stretch its AL Central lead over Cleveland to four games and also to establish some down-the-stretch dominance over the division's lower rungs.

Instead, it was Giolito who established his dominance. The righthander, whose 1.63 ERA in day games is the only AL mark better than Odorizzi's 1.82, threw 21 first-pitch strikes and got the Twins to swing and miss 24 times. He largely stuck to his 95-mph fastball but wielded a flinch-inducing changeup that produced five of his strike-three whiffs.

"Every single pitch, there was an intense focus to execute that pitch. There weren't many mistakes," White Sox catcher James McCann said of his fellow All-Star. "His focus and his execution and his aggressiveness in the zone — that shows in the results."

Giolito allowed a bunt single to Jorge Polanco in the first inning, then struck out Nelson Cruz and Eddie Rosario to render it meaningless. Cruz singled sharply in the fourth inning, the hardest-hit ball all day, but a groundout and a Miguel Sano strikeout quickly ended any threat.

And after Giolito retired 12 straight batters, Jonathan Schoop cracked a ground ball down the left-field line, a double that merely redoubled Giolito's determination to finish his complete-game shutout, the first one against the Twins since the Cubs' Jake Arrieta blanked them on four hits in Target Field on June 21, 2015.

"[Giolito] was really good," Max Kepler said. "He's hiding the ball better, as opposed to his last starts against us."

As easy as it was for Giolito, Odorizzi was battling his fate from the start. A line drive, a couple of ground balls and an odd error on Jorge Polanco — the shortstop failed to touch second base on a force play, his eighth error of August and sixth in his past eight games — handed the White Sox a 2-0 first-inning lead.

A couple of singles in the third inning turned into another run when Jose Abreu hit a pop-up into shallow right field that no fielder could reach in time. And in the fifth inning, Abreu scored from third when Odorizzi threw a two-out wild pitch, the first time since 2015 he's thrown a ball away in consecutive games.

Which is why Odorizzi credited his opponent but conceded little.

"When you get weak contact, break some bats, do everything you can do from your side, that's pretty much all you can ask for," he said.

"I can do the same thing next time I see these guys and it can be tremendously better. There was a lot of good today. Just not enough."