© AP Photos
Palermo were up against it from the outset and conceded a penalty early on when Salvatore Aronica was penalised for holding Balotelli in the area.
The Italian forward stepped up to coolly finish from the spot and give Massimiliano Allegri's side the lead.
The visitors felt that Cristian Zapata should have been sent off soon after for denying Jospil Ilicic a clear run at goal with his hand.
Despite fierce protests from Palermo players, the referee decided that a yellow card was sufficient punishment for the Colombian defender.
Milan struggled to control possession in the second half but sealed the points when Balotelli took advantage of a fortunate deflection to tap home his second from close range.
Palermo were unable to respond in the closing stages as Milan recorded a win that keeps them third in Serie A.