Alessio Romagnoli and Franck Kessie were on target before half-time as Serie A leaders Milan marched on without Zlatan Ibrahimovic.
Evergreen striker Ibrahimovic made it 10 goals in six top-flight matches this season when his brace inspired a 3-1 win at Napoli, although he limped off with a hamstring complaint in the closing stages.
Yet Stefano Pioli’s side marched on without their talisman against struggling Fiorentina, with Franck Kessie netting one first-half penalty and missing a second after Alessio Romagnoli opened the scoring.
Goal 50 Revealed: The best 50 players in the world
— OptaPaolo (@OptaPaolo) November 29, 2020
Fiorentina undid an encouraging start in the 17th minute when Milan captain Romagnoli was left unmarked at the back post to nod in Kessie’s flick-on from Hakan Calhanoglu’s right-wing corner.
Dusan Vlahovic thumped against Gianluigi Donnarumma’s near post as Cesare Prandelli’s men searched for an equaliser but they were left with a mountain to climb when German Pezzella clumsily brought down Alexis Saelemaekers in the area.
Kessie coolly sent Bartlomiej Dragowski the wrong way but the Fiorentina goalkeeper levelled their personal battle in the 40th minute – springing to his left to keep out a poorly struck spot-kick after Martin Caceres bundled into the marauding Theo Hernandez.
Calhanoglu fizzed a fabulous half-volley into the side netting before half-time and came even closer in the 53rd minute, hitting the base of the left post.
Franck Ribery almost reduced the arrears two minutes later but Donnarumma was equal to the veteran campaigner’s dinked effort – a squandered chance which summed up a Fiorentina display littered with moments of self-sabotage.