AC Milan startte met Clarence Seedorf en de van een enkelblessure herstelde Jaap Stam in de basiself. In het begin van de eerste helft viel vooral Filipo Inzaghi op. Hij creëerde twee kansen voor zichzelf, maar schoot tekort in de afwerking. Aan de andere kant kreeg Silvain Wiltord van Olympique Lyon een reuzenmogelijkheid, toen doelman Dida een mispeer van jewelste beging. Gelukkig voor de thuisploeg schoot de Fransman gehaast over. Ook Malouda was dichtbij de openinstreffer na opnieuw een blunder van de goalie van Milan. Dida was te laat, terwijl Kakhaber Kaladze de bal probeerde af te schermen, waardoor Malouda de bal in een leeg doel kon lepelen. De aanvaller mikte echter op het dak van het doel.
Daarmee kwam er nog geen einde aan de rampspoed voor Milan. Een paar minuten nadat Juninho een vrije trap bijna binnenschoot, moest Stam er af met een opnieuw een enkelblessure. Even leek het niet goed te komen met de Rossoneri, maar in de 25ste minuut was daar uit het niets de goal voor Milan. Seedorf zette goed voor vanaf links en Inzaghi kopte vrijstaand binnen: 1-0.
Nog in de eerste helft kreeg Lyon waar het recht op had. Na ruim een half uur konden Fred en Cris geheel niet gedekt bijna een vrije trap van Juninho binnenkoppen, maar ze liepen elkaar in de weg. Oud-Vitessenaar Diarra nam de rebound graag voor zijn rekening: 1-1. In de 40ste minuut konden de Fransen zelfs verdiend op voorsprong komen, maar Fred had de pech dat zijn kopbal de paal trof. De bezoekers hadden wel geluk dat scheidsrechter Terje Hauge verdediger Cris niet bestrafte met rood toen hij natrapte richting Inzaghi.
In de tweede helft was Seedorf dichtbij de benodigde 2-1, maar zijn schot ging rakelings naast. Milan bleef zoeken naar de voorsprong, waardoor de wedstrijd het aankijken meer dan waard was. Wiltord kopte ook nog een inzet van Kaka van de lijn.
Lang leek het erop dat Lyon voor het eerst in de historie van de club naar de halve finale van de Champions League zou gaan, maar Milan zou Milan niet zijn, als het geen late verrassing in petto had. Twee minuten voor tijd schoot Andrei Shevchenko op beide palen voordat (wie anders) Inzaghi de bal binnen kon frommelen.
Villarreal klopte Internazionale in een harde wedstrijd, waarin vooral Marco Materazzi zich schandalig gedroeg, dankzij een kopdoelpunt van verdediger Arruabarrena. AC Milan moet in de halve finale tegen de winnaar van FC Barcelona - Benfica en Villarreal speelt tegen Arsenal of Juventus.