Willingham's homer was the big blow in a five-run third inning for the Twins, who have won five consecutive games.
Ryan Doumit drove in the go-ahead run in the seventh for the Twins.
Brennan Boesch had a solo home run and drove in three runs for the Tigers, who have lost two in a row.
The Tigers scored three runs in the fourth inning to tie the score 6-6 but could not score again against the Twins, who picked up solo runs in the seventh and ninth innings.
Jessica Simpson shares three-way kiss with friends in photo
Senate Democrats to pull all-nighter on climate change