Terms weren't revealed by the team, but the deal is worth $3.5 million and Archer can earn up to $9.5 million this season with performance bonuses, sources told ESPN's Jeff Passan.
The 33-year-old Archer made five starts and one relief appearance for the Tampa Bay Rays in 2021, posting a 4.66 ERA in 19 1/3 innings. He was sidelined for the majority of the season with tightness in his right forearm.
Archer has a career 3.87 ERA with 1,370 strikeouts in 1,254 1/3 innings and a .240 opponent batting average. He was third in AL Rookie of the Year voting for the Rays in 2013 and fifth in Cy Young Award balloting in 2015.
The Rays traded Archer at the 2018 deadline to the Pittsburgh Pirates. After missing the 2020 season due to injury, Archer returned to the Rays as a free agent last year.
Archer could slot in Minnesota's rotation behind Sonny Gray, Joe Ryan, Bailey Ober and Dylan Bundy. Ober made 20 starts as a rookie last season, and Ryan made five starts in his debut. Gray was acquired in a trade with the Cincinnati Reds, and Bundy was signed as a free agent after leaving the Los Angeles Angels.
To open a spot for Archer on the 40-man roster, the Twins sent left-hander Lewis Thorpe outright to Triple-A St. Paul.
The Associated Press contributed to this report.