The Italian striker smashed home a second half free kick after Philippe Mexes's opener to secure the points for Clarence Seedorf's men.
Goals in each half from Philippe Mexes and Mario Balotelli saw Seedorf's mid-table side lift ita flagging season as it produced a masterful display at the Stadio Artemio Franchi.
Fiorentina, meanwhile, was dealt a blow to its Champions League ambitions, after successive Serie A wins had lifted hopes of a late surge towards third place.
Mexes nodded in from close range from a Balotelli set piece midway through the first half before Balotelli himself doubled the lead with another superb free kick.
In the end it was comfortable for the visitors, as they finally began to show signs of returning to something like their best.
Seedorf rang the changes after the "positive step" of Sunday's 1-1 draw at Lazio, with goalkeeper Christian Abbiati, Sulley Muntari, Adel Taarabt and Balotelli all restored to the starting lineup.
But it was Fiorentina which carved out the first chance of the game after a patient opening, with Milan loanee Alessandro Matri going close with a neat header from a deep Gonzalo Rodriguez cross.
The hosts were forced into an early change when defender Manuel Pasqual left the field in the 18th minute with an apparent injury, to be replaced by Argentinean Facundo Roncaglia.
And they were behind in the 23rd minute when a long-range free kick from Balotelli was mishandled by goalkeeper Neto and Mexes was there to head the rebound over the line from close range.
A weaving run from Juan Cuadrado resulted in Abbiati being forced into a smart save at his near post as Fiorentina sought an immediate response, but the deficit was almost doubled on the half-hour mark when Muntari collected a loose ball 35 yards out and looped a volley on goal that Neto had to deal with.
Milan was strong in midfield and frustrating the hosts, and a counterattack led by Taarabt saw the Moroccan draw another smart save from Neto before Muntari lashed wastefully over from an inviting right-wing Keisuke Honda cross five minutes before the break.
Matri squandered a golden opportunity to equalize just three minutes into the second period when Joaquin headed a deep cross into the box and the unmarked 29-year-old headed wide with the goal at his mercy.
Spanish winger Borja Valero then saw a 20-yard left-footed drive go narrowly over for Fiorentina, as Milan continued to keep Vincenzo Montella's side at arm's length.
And in the 64th minute it doubled the lead with a piece of individual brilliance.
Balotelli had begun to grow into the game, and he curled an exquisite 20-yard free kick over the wall to beat Neto for his 12th league goal of the season to put the game beyond the hosts.
Fiorentina piled on some late pressure but its play was ragged and prompted no clear cut chances as Milan comfortably saw the game out.