Milan saw their lead wiped out by three goals inside the first 43 minutes.

Walter Pandiani fired the first after five minutes, before Juan Carlos Valeron headed a second and Albert Luque put Deportivo ahead on aggregate.

Substitute Gonzalez Fran added a fourth to finish Milan's challenge as they joined Real Madrid and Arsenal in suffering shock defeats.

Deportivo will now face FC Porto in the semi-final, with Chelsea and Monaco completing an unlikely line-up.

The Spaniards needed an early goal to spark hopes of a shock after the first leg - and they were on target after only five minutes.

Pandiani took advantage of ponderous defending by veteran Paolo Maldini to turn and fire a left foot shot past Dida from 15 yards.

The normally smooth Milan machine was spluttering and Deportivo surged forward with renewed hope.

Jorge Andrade's header tested Dida and Valeron forced a fine save out of the Brazilian keeper.

But it was only a matter of time before Deportivo added the second and it duly came 10 minutes before the interval.

Dida horribly misjudged a cross from Luque and Valeron headed into an empty net.

KEY MOMENTS 5 mins: Walter Pandiani puts Deportivo ahead 35 mins: Juan Carlos Valeron doubles Deportivo's advantage 43 mins: Albert Luque scores to put Deportivo ahead on aggregate 75 mins: Substitue Gonzalez Fran scores Deportivo's fourth

Milan's traditionally reliable defence was being torn apart and Deportivo were in dreamland after 43 minutes when the rampant home side put themselves ahead on aggregate.

Alessandro Nesta's hesitation was severely punished by Luque, who brushed him aside before finishing with a flourish high past Dida.

Milan had barely been seen as an attacking force, but Jon-Dahl Tomasson posted a warning for Deportivo after 51 minutes when he broke clear but pulled his finish wide.

But Milan were still vulnerable and Victor wasted a glorious opportunity to score Deportivo's fourth, shooting wildly over the top from only eight yards.

Deportivo were showing remarkable control and composure, and added a deserved fourth with 15 minutes to go.

Veteran substitute Fran took advantage of a mistake by Gennaro Gattuso to beat Dida with the aid of a deflection.

Milan were in a desperate position, but substitute Rui Costa almost rescued them with a 25-yard drive as time ran out, only for Jose Molina to produce a magnificent save.

D Coruna: Molina, Manuel Pablo, Romero, Naybet, Andrade, Mauro Silva, Sergio (Duscher 87), Victor, Luque (Fran 66), Valeron (Djalminha 90), Pandiani.

Subs not used: Munua, Tristan, Capdevila, Hector.

Booked: Victor, Pandiani.

AC Milan: Dida, Cafu, Pancaro (Rui Costa 77), Nesta, Maldini, Pirlo (Serginho 59), Seedorf, Gattuso, Kaka, Tomasson (Inzaghi 67), Shevchenko.

Subs not used: Abbiati, Costacurta, Laursen, Brocchi.

Booked: Pirlo.

Attendance: 29,000.

Referee: Urs Meier (Switzerland).