The hosts looked to have nicked all three points with a late header from Stefano Denswil but the Rossoneri forward levelled matters with an injury-time spot-kick
The Eredivisie side dominated large parts of the Group H encounter and were unlucky not to have taken all three points after scoring in the 90th minute through Stefano Denswil, but a stoppage-time penalty from Mario Balotelli earned the visitors a point.
Kolbeinn Sigthorsson and Viktor Fischer both went close for the hosts early but they failed to stretch Christian Abbiati in the Milan goal.
Both teams came into the clash off the back of league victories at the weekend, but there were still changes from those games.
Daley Blind and Sigthorsson came in for the hosts, while Massimiliano Allegri made three changes, with Balotelli, Ignazio Abate and Riccardo Montolivo all starting.
Frank de Boer's side began the game in the ascendancy as they controlled possession and went closest to opening the scoring.
Sigthorsson was the first to test Abbiati in the fifth minute after receiving a pass from Lerin Duarte, the Iceland international fired low towards the bottom corner but the goalkeeper saved well with his legs.
Milan were struggling to get hold of the ball and they were let off again 13 minutes later as Fischer sent a drive just wide of Abbiati's left-hand post.
The Dane received the ball from Blind after neat work from the full-back, but his effort never worried the Milan goal.
Niklas Moisander should have opened the scoring with nine minutes of the half remaining, but he fired over the bar after Milan had failed to clear a corner properly.
Montolivo had the first chance after the break but he could not break the deadlock as he forced Cillessen into his first save of the match. The midfielder met a low pull-back from Kevin Constant but his shot was punched away by the Dutch goalkeeper.
Ajax were far from out of the game though and Abbiati was again called into action just before the hour. Sigthorsson got himself in front of Abate to meet a Fischer cross but he headed straight at Abbiati, who did not have to move to make the save.
Balotelli had been anonymous in attack for the visitors but he burst into life in the 63rd minute as he saw a curling crash against the crossbar.
The striker cut inside Moisander on the left-hand side of the penalty area and fired a shot that looked destined for the top corner, but Cillessen got his fingertips to it and turned it onto the bar.
Both sides pushed for a late winner and the hosts thought they had one when Denswil evaded the Milan defenders to power a header home from six yards out.
However, Balotelli was brought down inside the penalty area in stoppage time by Mike van der Hoorn and the striker made no mistake from the spot, sending Cillessen the wrong way, to seal a point.