AC Milan's combined attacking force of Andriy Shevchenko, Filippo Inzaghi and Rivaldo could not break down RC Celta de Vigo, who always looked more likely to win their first home UEFA Champions League game.
But the defending champions will be pleased to have extended their unbeaten run in the competition to seven games after Celta squandered a succession of opportunities in both halves. Even when the visitors introduced Inzaghi and Rivaldo as second-half substitutes, they struggled to test José Manuel Pinto in the Celta goal.
Celta coach Miguel Ángel Lotina was missing the suspended midfield players Peter Luccin and José Ignacio Sáenz, while strikers Catanha and Edu were out injured. But he welcomed back captain Aleksandr Mostovoi from suspension, who was preferred to Savo Milosevic, the only fit recognised striker in the squad, as the front man in a 4-3-2-1 formation.
Defence the key
Milan began at the soaking wet Balaídos stadium by looking to capitalise on Serginho's pace down the left flank. The Brazilian, only in the side as Kakha Kaladze was injured, was a constant worry to full-back Juan Velasco and almost opened the scoring but his dive to reach Shevchenko's cross from the left was in vain. The ball broke to Kaka, whose shot was punched to safety by Pinto. It was Milan's only effort of a first half in which they were not concerned about going forward - they only wanted to keep a clean sheet.
Vagner misses twice
Even that looked beyond them at one stage. Despite leaving Milosevic on the bench, the Spanish side were a menace going forward and had four good chances to break the deadlock. The first two fell to Vagner, who sliced one effort wide before chipping another straight at Dida.
Two more chances
Juanfran was next to go close: he leapt on to Alessandro Nesta's short defensive header and volleyed a dipping shot narrowly wide. Just before half-time, Mostovoi had the best chance of the match. The Russian knocked the ball past Nesta on one side, and ran round the other side of him, before striking the ball towards Dida's top corner. But the Brazilian was up to the task and blocked the shot.
Milan were more aggressive when the second half started, but the story was the same, as Jesuli wasted another chance by shooting straight at Dida when in space. Dida was then rescued by Nesta, who lunged to block a Mostovoi shot from nine metres which looked set to creep into the bottom corner. That was the cue for Lotina to introduce Milosevic into the fray - a tactical move that was trumped by Ancelotti, who brought on Inzaghi and Rivaldo.
Frustration all round
But all three players were frustrated as the only chances in the game fell to midfield players who had left their shooting boots at home. Jesuli, Vagner and Ángel Lopez all had shots from range that were too close to Dida. At the other end, Inzaghi was left cursing Cafu when the Brazilian's cutback from the by-line was too close to Pinto.
Costa sums it up
Seven minutes from time, Manuel Rui Costa summed up the game when he ended a wonderful spell of Milan possession with a curling shot that was straight at Pinto.