Gennaro Gattuso's men, fresh from midweek's Europa League victory over F91 Dudelange, dominated proceedings in the first half but their dominance yielded nothing.
Four minutes after the restart, they fell behind Roberto Inglese's header from a corner kick but needed two VAR-influenced decisions to steer clear, away from last week's disappointment.
Patrick Cutrone's 55th-minute volley drew them level, and Kessie scored the winner from the penalty spot after Alessandro Bastoni met a cross with outstretched arms; both decisions needing video assistant reviews.
Kessie's goal ended his countryman Gervinho's - named Serie A Player of the Month and in action for over an hour at the San Siro - team three-match unbeaten run as Milan moved a place up to fourth in the league standings.
The goal was the midfielder's third in the league this season and will hope to continue his impressive form when they face Torino next week.