Barcelona were dumped out of the Europa League on Thursday as Eintracht Frankfurt pulled off a shock 3-2 victory at Camp Nou to progress to the semi-finals.
After the first leg finished 1-1 in Germany last week, Barca were strong favourites to win at home against a side sitting ninth in the Bundesliga.
But Frankfurt, inspired by an incredible travelling support of around 20,000 fans, outplayed the Catalans, Filip Kostic scoring twice, the first an early penalty, either side of a stunning long-range strike by Rafael Santos Borre.
Sergio Busquets pulled one back for Barcelona in the 91st minute and then Memphis Depay scored a penalty in the 11th minute of injury time as the hosts attempted a late comeback.
But it was too little, too late as Frankfurt sealed a momentous 4-3 aggregate win.
They will face West Ham in the last four after the Premier League side cruised past Lyon.
"It's a hammer blow for us. They deserved to go through," said Barcelona coach Xavi Hernandez, who was also unhappy at the number of away fans inside the stadium.
"Obviously it didn't help us," Xavi added. "It was like a final, the fans evenly divided. The club is checking what happened but it was an error on our part."
Barcelona were undefeated since December in all competitions and have surged up to second in La Liga after thrashing Real Madrid 4-0 at the Santiago Bernabeu less than a month ago.
While that run means Barca should no longer need the Europa League to qualify for the Champions League next season, this was a great chance for Xavi to add a trophy to what has been an impressive first few months as coach.
Instead, Frankfurt go through to the last four and the German club will now be eyeing a first European triumph since they won the UEFA Cup in 1980.
"What we have experienced today no money can buy," Frankfurt coach Oliver Glasner said. "These emotions will last forever."
Injury time goals
They exploded out of the blocks and Barca gave them a head start, Eric Garcia pulling down Jesper Lindstroem under a high ball in the box and Kostic driving in the penalty after three minutes played.
Barcelona went close to an equaliser as Ronald Araujo's volley was palmed away before Pierre-Emerick Aubameyang headed Ousmane Dembele's cross just over.
But Frankfurt kept pouring forward on the counter and in the 36th minute they scored again. Dembele's pass for Busquets fell short in midfield and Frankfurt broke fast.
Kostic scooped in-field for Borre, who advanced at the retreating Araujo and then unleashed from 40 yards, the ball thundering past Marc-Andre ter Stegen and into the net.
Frenkie de Jong replaced the injured Pedri at half-time and Barca almost grabbed the early goal they needed but Aubameyang inexplicably missed the ball from a yard out at the back post.
At the other end, Lindstroem could have put Frankurt out of sight but his finish was blocked by the right foot of Ter Stegen while Barca wanted a penalty for a handball against Borre but technical problems prevented the referee from reviewing with VAR.
Aubameyang and Garcia both went off and moments later, Frankfurt hit Barca with a third that was as ruthless as it was simple.
A throw-in was headed onto Daichi Kamada, who had time to shift left to Kostic. Sergino Dest was slow to close the space and Kostic punished him, unleashing a shot past Ter Stegen and into the far corner.
Busquets, who had already had a goal ruled out by VAR, finally lashed one in for Barcelona in the first minute of injury time.
Barca needed two more. They should have got one but Araujo's finish was blocked and Luuk de Jong headed wide.
Then they did, De Jong barged over by Evan N'Dicka and Depay finishing from the spot. There was no time for another attack.
(This story has not been edited by NDTV staff and is auto-generated from a syndicated feed.)