A first-half header from Hakan Calhanoglu was enough to give Gennaro Gattuso's side maximum points against the struggling Viola.
Alban Lafont made two smart saves in the space of three minutes to deny Suso and Calhanoglu, as Milan made all the early running in Florence against a team with only one win in all competitions since the start of February.
They got the breakthrough 10 minutes before the interval, with Calhanoglu glancing Suso's curling cross from the right into the bottom-left corner.
6 - Hakan #Calhanoglu has been involved in six goals in four Serie A games against Fiorentina (three goals, three assists), at least four more than against any other opponent in the Italian Top-Flight. Obsession. #FiorentinaMilan— OptaPaolo (@OptaPaolo) May 11, 2019
Fiorentina showed far more endeavour in the early minutes of the second half and Gianluigi Donnarumma reacted well to keep out Kevin Mirallas' strike after the Belgian forward's strong run.
Donnarumma then had to claw the ball away from the right-hand corner of his net after Franck Kessie sent it goalwards, and only a combination of the goalkeeper and Alessio Romagnoli stopped Federico Chiesa as Fiorentina pushed.
They could not find a way through Donnarumma or a resilient Milan defence, though, and it could have been worse had substitute Patrick Cutrone not wasted a clear chance on the counter-attack with 10 minutes left.
What does it mean? Milan's top-four chase still alive
Atalanta's victory over Genoa earlier meant Milan realistically had to win to keep the pressure on in the race for the top four. They are now only three points adrift of Gian Piero Gasperini's side and one behind Inter, who face relegated Chievo on Monday.
As for Fiorentina, a fifth loss in a row and 14 games without a win means the end of the season cannot come soon enough.
A first clean sheet in nine Milan appearances in all competitions will have been welcome for Donnarumma, who showed excellent reactions to keep Vincenzo Montella's side at bay.
Piatek continues to misfire
It is now five games without a goal in Serie A for Krzysztof Piatek, who looked off the pace throughout his 74 minutes on the pitch.
Key Opta Facts
- Milan have kept a clean sheet in an away Serie A game for the first time since January (versus Genoa).
- Calhanoglu has been involved in six goals in four Serie A matches against Fiorentina (three goals, three assists), four more than he has managed against any other opponent in the league.
- Suso has delivered 10 league assists this season, his record in a single Serie A campaign. The previous Milan player to achieve that feat was Antonio Cassano in 2011-12.
- Fiorentina have not scored in three consecutive Serie A games for the first time since February 2012.