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.
Pregnant Mila Kunis wins 'Best Villain' at MTV Movie Awards
'Happy' fan videos make Pharrell cry [VIDEO]