The deal is worth $12 million prorated for the rest of this season, Heyman reports.
The Yankees were believed to be the frontrunners for Morales' services, with the Rangers, Brewers and Mariners also showing interest, but the Twins landed the 30-year-old power hitter from Cuba.
Morales hit .277 with 23 homers and 80 RBIs in 156 games for Seattle last season. His best season came with the Angels in 2009, when he hit .306 with 34 homers and 108 RBIs, finishing fifth in AL MVP voting.
He missed most of 2010 and all of 2011 after he broke his leg when he jumped on home plate celebrating a walk-off grand slam.
Morales wasn't signed until now because "a draft pick had been attached to his signing until this week's draft," according to Heyman. Minnesota won't have to give up a pick.
The Twins were 28-31 heading into Saturday's home game against the Astros.
Mystery team wins again. Kendrys Morales is a surprise addition to enhance #twins offense. http://t.co/MkPnjgNz7Y
— Jon Heyman (@JonHeymanCBS) June 7, 2014
Morales gets $12M prorated for '14 #twins f — Jon Heyman (@JonHeymanCBS) June 7, 2014