Milan did not appear to be too disheartened by their midweek Champions League thrashing at Barcelona and were briefly level with second-placed Napoli as Balotelli fired his sixth goal in Rossoneri colours from the penalty spot.
Napoli would ultimately push on and beat Atalanta 3-2 to keep Milan at bay, but Balotelli's close-range second guaranteed an 11th league game without defeat for Massimiliano Allegri's men.
Palermo, meanwhile, took one more step towards relegation as returning head coach Giuseppe Sannino failed to deliver a first win in 16 attempts for the Sicilians, who remain joint last with Pescara.
News of Napoli's quickfire opener through Edinson Cavani filtered north to the San Siro and Balotelli accepted the challenge by firing Milan ahead from the spot in the ninth minute.
There was no disguising the fact Salvatore Aronica had pulled the former Manchester City man back in the area, and Balotelli made no mistake to beat Stefano Sorrentino, who did guess the right way.
Milan's tails were up but Kevin-Prince Boateng could not keep his swerving left-footed effort down in the 17th minute, before Steve Von Bergen cut out a fine jinking run from Stephan El Shaarawy.
Palermo were screaming for a penalty of their own when Cristian Zapata clipped Paulo Dybala's high ball forward with his hand, but referee Sebastiano Peruzzo judged the indiscretion to be just outside the area.
The islanders were furious and their mood barely improved as Josip Ilicic could only smash the resulting free-kick against the wall.
Dybala then volleyed wide before Michael Morganella came much closer as half-time approached. The Swiss international wriggled into a solid shooting position to produce a daisy-cutter that forced a desperate fingertip save from Christian Abbiati.
Milan's keeper repeated the trick from a Dybala shot as play resumed following half-time, after the Argentinian beat the offside trap to cut in and shoot across the goalmouth.
Balotelli was then left frustrated as his sumptuous through-ball to Boateng was cut out by Morganella but he would be smiling again in the 66th minute.
M'Baye Niang, who had replaced El Shaarawy, streaked down the left wing to find Balotelli in the six-yard box. Aronica deflected the cross against Sorrentino but the Italy striker was lurking to rattle home the rebound.
It was proving increasingly difficult to contain Niang, who soon wriggled free to set up Balotelli a second time. This time, however, Sorrentino was wise to the move.
A better day for Milan, then, but there was some cause for concern as Boateng was forced off with a debilitating shoulder injury in the last 10 minutes.
There was still time for the mercurial Balotelli to gun for his hat-trick and a near-miss from a free-kick was a much better attempt than his crowd-pleasing lob from the halfway line.