The White Sox will pay Gonzalez $4.5 million in 2020 and hold a $7 million option for the 2021 season, with a $500,000 buyout. He can make an additional $500,000 with incentives over the two years, sources told ESPN's Buster Olney.
The 34-year-old left-hander finally will get a chance to pitch for the team that took him with the No. 38 overall pick in the 2004 amateur draft. Chicago dealt Gonzalez to Philadelphia following the 2005 season as part of the trade that sent Aaron Rowand to the Phillies for Jim Thome, then reacquired Gonzalez a year later along with Gavin Floyd for Freddy Garcia.
The White Sox traded Gonzalez to the Athletics for Nick Swisher in January 2008.
Gonzalez debuted with the Athletics in 2008 and is 130-99 with a 3.68 ERA over 12 years with Oakland (2008-11), Washington (2012-18) and Milwaukee (2018-19). He was an All-Star in 2011 and 2012, when he won a career-high 21 games and had a 2.89 ERA.
"We view Gio as an important addition to our pitching staff," general manager Rick Hahn said in a statement. "He brings an impressive resume to our club as a veteran left-hander who has enjoyed success and should have a positive impact on our younger pitchers in terms of competing, battling and helping us win games at the major league level."
Gonzalez was 3-2 with a 3.50 ERA and 78 strikeouts in 17 starts and 19 appearances last season for the Brewers, who signed him last year to a second option on a contract that wound up being worth $65.5 million over seven years.
He made only six starts before spending more than a month on the injured list with left arm fatigue, recording a 2-1 record with a 3.19 ERA and 25 strikeouts. But he did return to make 11 more starts and log 56⅓ innings in the second half as the Brewers won the wild card.
Gonzalez also spent the final month of the 2018 season with the Brewers, who acquired him in an Aug. 31 trade with the Nationals. He was 3-0 in five starts for the Brewers down the stretch, then started Games 1 and 4 of the NLCS against the Dodgers. He was pulled after two innings of the opener and one inning of his second appearance, allowing one run in each.
Chicago went 72-89 in its seventh straight losing season and missed the playoffs for the 13th time in 14 years since its 2005 World Series title. But with young players establishing themselves in the majors and promising prospects in the minors, the White Sox expect to contend for a postseason spot.
Right-hander Lucas Giolito went from the highest ERA among qualifiers in 2018 to his first All-Star season, going 14-9 with a 3.41 ERA in 29 starts.
Chicago added All-Star catcher Yasmani Grandal -- Gonzalez's teammate in Milwaukee last season -- in November when he agreed to a $73 million, four-year contract. The White Sox also re-signed slugger Jose Abreu to a $50 million, three-year deal last month and acquired young slugger Nomar Mazara from the Texas Rangers at the winter meetings last week.
The Associated Press contributed to this report.