Keuchel, who turns 32 on Wednesday, will earn $18 million each season from 2020-22. The White Sox hold a $20 million club option for 2023 with a $1.5 million buyout.
"We viewed Dallas as one of the premier free agent pitchers available this winter and so are thrilled to add him to this team and to our starting rotation," White Sox general manager Rick Hahn said in a statement. "Dallas is a great competitor who we foresee throwing valuable innings in meaningful games for us over the next several years and leading our entire pitching staff through his example day in and day out."
After signing with the Atlanta Braves as a free agent on June 8, Keuchel posted an 8-8 record with a 3.75 ERA and 91 strikeouts across 19 starts with the club. He was 5-3 with a 2.55 ERA over his final nine starts last season.
Keuchel, a native of Tulsa, Okla., won the AL Cy Young Award and finished fifth in MVP voting in 2015 after going 20-8 with a 2.48 ERA as a member of the Houston Astros.
The two-time American League All-Star and four-time Gold Glove Award winner has an 84-71 record with a 3.67 ERA, 1,036 strikeouts and 12 complete games (four shutouts) in 211 career games (202 starts) across eight MLB seasons with the Astros and Braves.
Keuchel will become the first former Cy Young Award winner to pitch for the White Sox since Jake Peavy in 2013.