Sanchez, 33, can make up to $2.5 million more depending on how many games he starts.
Sanchez pitched a no-hitter as a rookie with the Marlins on Sept. 6, 2006, and led the American League with a 2.57 ERA in 2013 with the Tigers.
But he had a 6.41 ERA last year in 105 1/3 innings, and the Tigers declined his option, making him a free agent. The Twins are looking for depth in their starting rotation, especially after losing ace Ervin Santana for 10 to 12 weeks to a finger injury.
FanRag was first to report Sanchez's signing.