"His fastball was really coming out well he's got unbelievable deception, he's got a great breaking ball and he's got a great change-up," Milwaukee manager Ron Roenicke said.
Sale is honored to pitch the opener, but he was unaware of the selection before the game.
"It was fun for me to go through that and experience it last year and I'm looking forward to it again," Sale said. "As much as you say you'll treat it like another start, it's the first one and you're going to be amped up about it. You have to corral yourself and pitch you're game."
The two-time All-Star allowed six earned runs in 2 2/3 innings in his previous Cactus League start against San Diego, but he was much sharper this time.
"I definitely wanted to work on location and command. My slider was a lot better than last time," he said. "It's a key pitch for me, something I really need to help me out. I worked on it a lot in my last bullpen situation."
The White Sox took a 4-3 lead in the ninth when Jared Mitchell scored on a fielder's choice by Jeff Keppinger. Roenicke challenged umpire Scott Barry's call at home plate but it was upheld by video replay. Andy Wilkins followed with a two-run single.
Roenicke has now challenged five calls this spring with all five being upheld by the umpires.
"That umpire (Barry) hadn't done a replay yet so when I went over and he goes `Will you challenge it? I haven't done one yet," Roenicke said. "So that's good for us, and good for him to do one."
White Sox: Sale, who was 11-14 with a 3.07 ERA last year, will make his second straight opening-day start.
"It's not fun when you face Sale. He's got pretty good stuff," said Milwaukee third baseman Aramis Ramirez, who struck out a flied out in his at-bats. "He looked like we were in the middle of the season."
Brewers: Milwaukee's Yovani Gallardo, expected to make his third straight opening-day start for the Brewers, matched Sale with 4 1/3 innings of two-hit ball.
Gallardo got into trouble in a long first inning. He walked Micah Johnson, allowed a double to Conor Gillaspie and a throwing error by Ramirez loaded the bases. But he regrouped to strike out Adam Dunn looking and Alexi Ramirez hit into a force play.
"Command got away from me a little, I was too quick to the plate," he said. "But I was able to make pitches when I needed to and that was the most important thing. "(Dunn) is a good hitter with a lot of power, so you have to make pitches and keep it down."
In his second start of the spring after having a non-cancerous polyp removed from his colon in January, Ramirez had some adventures in the field. He committed two throwing errors in the first four innings, both on easy plays. His throw on Avisail Garcia's grounder pulled Mark Reynolds well off the base to the outfield side. His throw Tyler Flowers' chopper in the fourth sent Reynolds leaping high off the bags. After the second throw, Ramirez flipped his glove in the air in disgust.
"I don't have my footwork going yet. That's what spring training is for," he said. "I feel pretty good out there, hopefully I look better than I played. Even in spring, you never want to make errors like that."
AND THEN THERE WERE 44 ...
The Brewers reduced their spring training roster to 44.
Milwaukee released RHP Michael Olmstead. Olmstead was signed by the Brewers as a free agent in November 2012. He was 1-1 with a 6.71 ERA with Triple-A Nashville and Double-A Huntsville last year. He was 0-1 with a 6.71 ERA in two Cactus League appearances over 1 1/3 innings.
The Brewers also returned OF Kentrail Davis, INF Hector Gomez, INF Taylor Green, OF Mitch Haniger and RHP David Goforth to their minor league camp, optioned 1B Hunter Morris, 1B/OF Jason Rogers, RHP Jimmy Nelson and RHP Ariel Pena to Triple-A Nashville and RHP Brooks Hall and RHP Kevin Shackelford to Double-A Huntsville.