Massimiliano Allegri's side are now three points behind Lazio after the striker scored from 12 yards to prevent his side slipping to an away defeat in Sardinia on Sunday
The Rossoneri enjoyed the greater of the possession but the home side fashioned the better chances in the opening period and scored on the stroke of half-time thanks to a header from Victor Ibarbo.
Cagliari then soaked up great pressure in the second period, but eventually they crumbled as Davide Astore was dismissed and Balotelli converted from the spot.
The Rossoblu began brightly and Ibarbo was released by the impressive Conti, but after beating compatriot Cristian Zapata he had the ball robbed from him by Ignazio Abate.
Marco Sau’s cunning was to the fore and the next chance was fashioned for the South American down the left channel, but the forward slashed hopelessly over the top with only Christian Abbiati to beat.
Philippe Mexes, who had a wretched afternoon, then conceded a needless free kick 35 yards from his goal, just before half-time and the resultant delivery from Danieli Conti was beautifully glanced home by Ibarbo.
Prior to that, Milan had been extremely flat. Although M’Baye Niang was making progress down the right-wing, only Balotelli was provoking any real threat to Michael Agazzi’s goal.
Having struck twice last weekend, the striker was full of confidence, yet his long-range free kicks were comfortably fielded by Michael Agazzi, despite their awkward, bobbling nature.
While the hosts had provided a genuine counterattacking threat in the opening half, they were considerably more limited after the break and became largely a defensive unit. Despite this, their well-organised nature meant that Milan were frustrated and there appeared no prospect of a levelling goal before Astori’s moment of foolishness.
With nine minutes remaining he dragged down Balotelli in the penalty area and the referee opted to award a penalty and dismiss the defender.
That left the former Manchester City man to stroke home his second spot-kick in a week and make it 1-1, with the draw meaning Milan remain unbeaten in Serie A since the turn of the year.