Crowd favourite Molinari and England's Willett began the day level on 16 under par, but the Italian hit a round of 65 to edge home in a thrilling finale.
Spain's Nacho Elvira finished four shots back on 18 under par, tied for third with England's Chris Paisley.
Fellow Englishmen David Horsey, Richard Bland tied for fifth on 15 under.
Tommy Fleetwood and Scotland's Scott Jamieson were among five players tied for seventh.
Molinari, 33, hit one eagle and five birdies in Sunday's final round to become the first Italian to win his national Open twice since the event became part of the European Tour in 1972.
The victory was the Italian's fourth at a European Tour event and a first since the Reale Seguros Open de Espana in 2012.
Seven of the European Ryder Cup team, which includes Willett, were competing in Monza as they prepare to take on the United States at Hazeltine in Minnesota from 30 September to 2 October.
We've launched a new BBC Sport newsletter, bringing all the best stories, features and video right to your inbox. You can sign up here.
Francesco Molinari carded a six-under-par final round to beat Masters champion Danny Willett to the Italian Open title by a single shot in Monza.