Underdogs Eintracht Frankfurt stunned hosts Barcelona 3-2 thanks to two goals from winger Filip Kostic to march into the semi-finals of the Europa League.

Serbia international Kostic converted a fourth minute penalty and added another in the 67th with a low drive after Rafael Borre thundered in their second goal in the 36th for a 4-3 aggregate victory and a sensational win at the Camp Nou.

The Catalans, big pre-match favourites after a first leg 1-1 draw in Germany last week, missed a couple of chances through Pierre-Emerick Aubameyang but were far less threatening than their opponents who could have added to their tally.

They did score twice in stoppage time through Sergio Busquets and a Memphis Depay penalty after Frankfurt's Evan N'Dicka was sent off but ran out of time for a third goal that would have forced scarcely deserved extra time.

Eintracht, who last reached the semi-final stage in 2019 and are unbeaten away from home this season in the Europa League, will now face West Ham, who thumped Lyon 3-0 in France to reach their first European semi-final in 46 years.

David Moyes' side were big underdogs heading to the French Alps following last week’s 1-1 draw at the London Stadium but two goals in seven minutes at the end of the first half from Craig Dawson and Declan Rice put West Ham in control.

Jarrod Bowen then made it 3-0 on the night, and 4-1 on aggregate.

Dozens of Lyon supporters were prevented by stewards from invading the pitch after the final whistle.

Christopher Nkunku is in sensational form this season

RB Leipzig's in-form French forward Christopher Nkunku sent them through to the last four after his double earned the German side a 2-0 win at Atalanta, sealing a 3-1 aggregate quarter-final success.

Following their draw in the first leg in Germany, Leipzig dominated in Bergamo, deservedly taking the lead when Nkunku slotted home from close range in the 18th minute.

Atalanta just could not get going, with Leipzig having chances to make the result more comfortable before Nkunku sealed the victory by winning and converting a late penalty to take his tally to 30 for the season in all competitions.

The visitors, who reached the Champions League semi-finals two seasons ago, will play Rangers.

The Scottish champions beat Braga 3-2 on aggregate, following a 3-1 win after extra time in the second leg of their quarter-final at Ibrox.

Rangers, trailing 1-0 from the first leg, got off to a flying start when full back James Tavernier put them ahead in the second minute.

A minute before the break, Braga's Vitor Tormena was ruled to have brought down Kemar Roofe inside the box - and French referee Francois Letexier sent off the defender and awarded a penalty, which Tavernier converted.

Seven minutes from the end of regulation time, David Carmo rose to head in a corner an equalise on aggregate but in the 11th minute of the extra period, Roofe, who had had two earlier goals disallowed, sealed the contest.