AC Milan scored twice in four minutes to defeat Bayern Munich in Germany and book a Champions League semi-final with Manchester United.
Inzaghi started the match poorly but scored with a superb striker
Clarence Seedorf shot past Oliver Kahn after 17 minutes before his sublime touch released Filippo Inzaghi to double Milan's lead from 18 yards.
Milan keeper Dida made good saves from Lukas Podolski and Mark van Bommel.
But Milan, who won 4-2 on aggregate, might have scored more, with Kahn saving low down from Kaka.
It was a frustrating evening for Bayern, who left the San Siro last week in good spirits after a 2-2 draw.
With United manager Sir Alex Ferguson watching from the stands they started the game the superior team - only to fall victim to an Italian team rich in European experience.
Milan roused themselves when it mattered and defended with relative comfort after their double salvo changed the complexion of the tie.
It would have been different had Bayern taken one of their early chances but Massimo Oddo cleared off the line after Christian Lell hooked a Van Bommel cross goalwards, while Podolsky's angled strike forced an excellent save from Dida.
The visiting team lacked cohesion, with Inzaghi in particular guilty of a series of poor touches, but Milan's swift double silenced the previously vociferous home crowd.
Seedorf put Milan ahead with his strike after 17 minutes
Bayern's failure to clear the ball from a defensive position was punished when Seedorf collected a precise Kaka pass and created a yard of space before shooting through the legs of Daniel van Buyten from 17 yards.
Four minutes later a deft flick from the outside of Seedorf's right boot completely unlocked the Bayern defence, with the previously inept Inzaghi superbly drilling the ball home from the edge of the box.
It was Inzaghi's 10th goal in as many fixtures against German opposition in the Champions League, but there was a strong suspicion of offside when he collected the ball.
Bayern coach Ottmar Hitzfeld brought on Roque Santa Cruz for Oddo at the break but initially Bayern struggled to find any space in or behind Milan's steadfast defence.
Frustration growing, the German side were forced to try their luck from long range, with Owen Hargreaves and Van Bommel both shooting wide.
Hasan Salihamidzic appeared to catch Alessandro Nesta with his studs as the Italian went to ground - an incident that not only led to angry scenes but seemed to bring the tie to life after a low tempo start to the second half.
Dida saved a superb strike from Van Bommel, while at the other end a jinking run from Kaka culminated with a side-foot shot that Kahn blocked with an outstretched leg.
The home team finally mounted a sustained period of pressure - with Dida denying Van Bommel and Santa Cruz - but Milan, superbly professional, drew their sting and brilliantly closed out the game.
Bayern Munich coach Ottmar Hitzfeld:
"It's a very big disappointment.
"We got a 2-2 draw in Milan and we had great hope that we would advance. But we always knew that Milan can win away from home.
"We were unlucky not to score first. It may have been different then.
"They got a lot of confidence from those two goals and they have great players. We tried everything and we went out fighting, but Milan was clearly the better team."
AC Milan midfielder Clarence Seedorf:
"I am delighted we have qualified and even more so that I scored.
"We have taken a step towards the final but Manchester United know us well."
Bayern Munich: Kahn, Salihamidzic, Lucio, Van Buyten, Lahm, Ottl (Santa Cruz 46), Hargreaves, Van Bommel, Lell (Gorlitz 77), Makaay (Pizarro 61), Podolski.
Subs Not Used: Rensing, Karimi, Ismael.
Booked: Van Bommel, Salihamidzic.
AC Milan: Dida, Oddo, Nesta, Maldini, Jankulovski, Gattuso (Cafu 87), Pirlo, Ambrosini, Seedorf (Gourcuff 80), Kaka, Inzaghi (Serginho 70).
Subs Not Used: Kalac, Kaladze, Oliveira, Bonera.
Goals: Seedorf 27, Inzaghi 31.
Ref: Manuel Enrique Mejuto Gonzalez (Spain).