Despite some high-quality passing and goal chances for both teams, neither side could find the net. But Milan will be the happier with the home leg to come on April 23.
The winner of this tie will play either Inter Milan or Valencia in the semi-finals early next month.
Soon after, Tunisian defender Hatem Trabelsi interrupted a fluent move among Rui Costa, Shevchenko and Filippo Inzaghi, otherwise Inzaghi would have had free passage to the Ajax goal.
Gradually, Ajax began to take control of the midfield, though they had little to show for their supremacy apart from a Rafael van der Vaart header that was saved by Milan's Brazilian 'keeper Dida.
Milan were forced into making a substitution after 26 minutes. Former Ajax player Clarence Seedorf, who was injured in a tackle with Trabelsi a few minutes earlier, was replaced by Serginho.
After Milan
Gennaro Gattuso picked up the first yellow card of the match for hauling down Ajax's American international John O'Brien. This rules Gattuso out of the second leg.
Milan dominated for much of the second half, but the midfield failed to create enough opportunities for Inzaghi and Shevchenko.
Meanwhile, Ajax kept coming forward and 12 minutes after the break Ibrahimovic shot wide after combining well with Steven Pienaar.
Milan seemed set to take the lead in the 71st minute, but Lobont pulled off a fine save from Milan midfielder Massimo Ambrosini.
Milan coach Carlo Ancelotti replaced Inzaghi and Shevchenko with Rivaldo and Jon Dahl Tomasson for the closing stages, but they barely had a chance to shine.
Ajax coach Ronald Koeman threw on Jari Litmanen in place of the tiring Ibrahimovic, but the Finn, out since last December with injury, clearly lacked match fitness and had only a minimal impact on the game.
Veteran Italian international Paolo Maldini and his fellow defenders, especially Alessandro Nesta, played well to give Milan the confidence of advancing in two weeks' time.