Mark van Bommel begon bij Barça op de bank. Bij AC Milan startte Clarence Seedorf en Jaap Stam wel in de basis.
Na vijftien minuten kreeg Samuel Eto'o de tweede grote kans van de wedstrijd en eigenlijk had de Kameroener het duel toen al moeten beslissen. De spits was iedereen voorbij, maar de 40-jarige Alessandro Costacurta kon zijn inzet nog van de doellijn halen. Milan deelde in de eerste helft wel wat plaagstootjes uit, maar kon geen vuist maken tegen een Barça dat oppermachtig was.
In de tweede helft kreeg Milan steeds meer grip op de wedstrijd en kwam de ploeg van trainer Frank Rijkaard een paar keer goed weg. Er werd zelfs een loepzuivere goal van Andrei Shevchenko om vage redenen afgekeurd. De spits uit de Oekraïne zou op zijn tegenstander geleund hebben.
In de counter waren Ronaldinho en Henke Larsson een paar keer dichtbij de beslissing, maar omdat die uitbleef, was het spannend tot de laatste minuut. Uiteindelijk bleven de Italianen met lege handen achter. Door het 0-0 gelijkspel heeft Europa haar droomfinale: op woensdag 17 mei zullen FC Barcelona en Arsenal elkaar treffen in Parijs om uit te maken wie dit seizoen de winnaar van de Champions League wordt.