The home side finally made the most of its opportunities 11 minutes after halftime when Higuain, who had been threatening all night, headed home a delightful cross from Inler.
The Argentine doubled his tally eight minutes from time to take his season tally to 16 in all competitions.
Shortly beforehand, Mario Balotelli broke down in tears on the bench after being substituted off following a below-par performance from the Italy striker.
"Everyone expresses emotions in that way," Milan coach Clarence Seedorf said. "It's not the first time it's happened to a player. It was a particular moment for him. It's happened to me before, too."
It was Seedorf's first league defeat of his fledgling managerial career.
Also, Udinese beat Chievo Verona 3-0 in a relegation battle.
Josip Ilicic broke the deadlock in Florence in the 16th minute when he curled a superb free kick into the near top right corner from 25 meters.