Two goals in the last five minutes from Filippo Inzaghi and Andriy Shevchenko took AC Milan into the UEFA Champions League semi-finals at the expense of Olympique Lyonnais, who had seemed set to progress to the last four for the first time on away goals.
Inzaghi nodded last season's runners-up in front midway through the first half, but the visitors hit back almost immediately through Mahamadou Diarra and held firm in the face of mounting pressure during a tense second half. With two minutes remaining, however, Inzaghi was quickest to react after a goalmouth scramble, and Shevchenko salted Lyon wounds deep in added time as the French champions bowed out in the last eight for the third year running.
Milan coach Carlo Ancelotti had started with Inzaghi and Jaap Stam, and his side enjoyed the better of the early exchanges with Clarence Seedorf and Andrea Pirlo seeking out the movement of Inzaghi and Shevchenko. Inzaghi set his sights on ten minutes, dragging Kakha Kaladze's long ball wide, and went close again five minutes later when he flicked Serginho's centre centimetres past the near post. Lyon, whose coach Gérard Houllier had brought Fred and Sidney Govou into a three-pronged attack, were creating very few chances but then the hosts proceeded to make three defensive errors in as many minutes.
First Dida miscued Alessandro Nesta's back-pass but Sylvain Wiltord was slow to control before shooting over. Then Fred reached a ball ahead of the Milan keeper and slipped it back to Florent Malouda who also miskicked. Juninho Pernambucano, back from suspension, was given a free-kick chance from distance, but Dida punched clear. After 25 minutes, though, just as Lyon were growing in confidence, Milan struck as Fred lost possession which allowed Shevchenko to feed Seedorf down the left and the Dutchman's cross was glanced magnificently into the far corner by Inzaghi.
Lyon quickly regrouped, and were level six minutes later. Juninho took another set-piece but this time caught the Rossoneri off guard by crossing to Fred, whose header was blocked accidentally by Cris. Diarra was first to react, nodding in to silence the crowd. Milan tried to respond, Seedorf and Inzaghi both threatening, but it was the away team who came closest to scoring again before the break. Juninho forced Dida to tip his cross-shot over the bar and then found Fred unmarked from the corner, with the latter's header grazing the post.
Milan gave notice of their second-half intent by troubling Lyon keeper Grégory Coupet within a minute of the restart, Nesta nodding narrowly over. Increasingly Milan sought to exploit the inexperience of Lyon right-back François Clerc, Kaká releasing Serginho only for the Brazilian to opt to shoot with Inzaghi unmarked. The game became stretched and Lyon, aware that another goal would leave the Italian side needing to score twice, went for it themselves. Juninho combined with Govou down the right but Nesta blocked the Frenchman's cutback.
Urged on by a noisy home support, Milan pressed forward, Serginho dancing through a wave of players only for his delivery to evade all his team-mates, before Wiltord brilliantly cleared Kaladze's goalbound effort off his line. Yet just when it appeared that Milan's luck was out, Inzaghi scrambled in after Coupet had touched Shevchenko's shot on to both posts to finally end Lyon's resistance. The Ukrainian then rounded the Lyon custodian to add a flattering third and set up a semi-final with either FC Barcelona or SL Benfica.