The penalty, four minutes into stoppage time, came after Ajax had taken the lead through central defender Stefano Denswil in the 90th minute of a match that contained few chances and only came to life in the closing stages.
Milan go second in Group H on four points, two behind leaders Barcelona who maintained their perfect start with their 1-0 win at Celtic.
Ajax are third having picked up their first point of the campaign after losing 4-0 to Barcelona on the opening matchday.
Ajax enjoyed the best of the first half as Milan struggled. After a quarter of an hour Daley Blind evaded three defenders on the left to set up Viktor Fischer, who sent a shot just wide from outside the area.
Then, on the 35th minute, Lerin Duarte's left-footed shot from an acute angle was smartly tipped over by Christian Abbiati. A minute later, Ajax again had a chance, Niklas Moisander slicing a volley just over. Milan had just 30% of possession in the first half, and failed to create a chance.
The second half brought the first Milan shot of the match, when Robinho found Balotelli in space on the left.
The striker cut onto his right foot, and unleashed a fierce shot which Jasper Cillessen tipped onto the bar. Five minutes later, Stefano Denswil was hugely lucky to escape a penalty after handling a Robinho cross.
In the last minute before added time, Ajax made a rare venture forward. From a corner on the right, Denswil found space as Sulley Muntari dithered, and appeared to win the game with a powerful close-range header.
Then, three minutes later, AC Milan were desperately pressing forward for an equaliser. As Balotelli jostled for a cross with Mike van der Hoorn, he dragged him to the ground and was inexplicably awarded a penalty.
Despite his recent miss against Napoli, Balotelli returned to normal service, and his penalty gave Milan a share of the points.