MINNEAPOLIS — White Sox right-hander Lucas Giolito was in complete control Wednesday against the hard-hitting Twins, outpitching fellow All-Star Jake Odorizzi with a three-hit shutout for a 4-0 victory.

It was Giolito’s second shutout and third complete game of the season, the most complete games by a Sox pitcher since Chris Sale had six in 2016. Giolito also blanked the Astros on May 23 in Houston.

Giolito became the first Sox pitcher since Gary Peters in 1963 to pitch nine innings and allow no runs or walks while striking out 12 or more batters. It was the latest gem in a remarkable breakout season after he struggled in 2018. He showed his exuberance on the mound and between innings in the dugout.

‘‘I’m a big caffeine guy,’’ Giolito said. ‘‘So getting my Red Bulls in and kind of bouncing around the dugout. I used to be, like, all serious. Coming up as a kid and in the minor leagues, I would take everything so seriously. I would sit there and think and be on the bench in between innings and realize: ‘Why not be myself at all times?’ That’s usually dancing around, bouncing around, acting a little crazy sometimes.’’

Giolito (14-6, 3.20 ERA) has nine road victories, the most by a Sox pitcher since Jon Garland was 12-4 on the road in 2006.

‘‘I like pitching on the road,’’ he said. ‘‘I don’t know what it is. Whatever the routine — being in the hotel, coming to different ballparks, I don’t know — I enjoy it.’’

Giolito threw 115 pitches, 82 of them for strikes. He finished the game by fanning Nelson Cruz for his 12th strikeout.

Relying mostly on his fastball and changeup, Giolito didn’t allow a Twins player to reach second base until Jonathan Schoop doubled to left with one out in the eighth. Giolito then struck out Jason Castro and Jake Cave to become first Sox pitcher to reach 10 strikeouts in three consecutive starts since Sale in 2015. (Sale’s streak eventually reached eight games.)

Jose Abreu had three hits, including a double, two RBI and a run scored. Leury Garcia and Tim Anderson each had two hits and combined to score three runs. Matt Skole drove in a run with a single.

Cease remains poised

Greater things were expected from top pitching prospect Dylan Cease’s first eight career starts. He’s 2-6 with a 5.93 ERA and 10 home runs allowed in 44 innings.

‘‘Less than ideal,’’ Cease said.

But the 23-year-old right-hander seems to be taking it in stride with an eye on 2020, when he’ll be counted on to hold down an important spot in the rotation.

‘‘It’s not something I’m freaking out about,’’ Cease said. ‘‘It’s just learning from what’s happening and taking in all the information I can for the following year.

‘‘I’m getting a better feel for my stuff and learning a better process. The results aren’t what I’ve wanted, but I feel I’m trending in the right direction.’’

Moncada expected Thursday

Outfielder Ryan Cordell was optioned to Class AAA Charlotte after the game, making room for third baseman Yoan Moncada’s expected return Thursday against the Rangers. Moncada (right hamstring) has completed a rehab assignment at Charlotte and is expected to play his first game since July 30.