Former Cy Young Award winner Keuchel entered free agency after a stint with the Atlanta Braves, who the left-hander joined in June and went 8-8 with a 3.75 ERA and 91 strikeouts over 19 starts.
The two-time American League All-Star will receive $18m each season from 2020 until 2022, though the White Sox hold a $20m option for 2023 with a $1.5m 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,” said White Sox senior vice president/general manager Rich Hahn.
“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.”
Keuchel, who turns 32 in January, is a four-time Gold Glove Award winner, recording a sub-3.00 ERA three times in his career.
2 votes