Villarreal dumped Bayern Munich out of the Champions League on Tuesday, Samuel Chukwueze's 88th-minute strike at the Allianz Arena giving the Spaniards a 1-1 draw in the second leg of their quarter-final tie that took them through 2-1 on aggregate.
Robert Lewandowski had put Bayern ahead on the night to level the tie on aggregate after Villarreal's 1-0 first-leg win, and extra time loomed until Chukwueze struck.
Unai Emery's Villarreal continued their remarkable European run, having also surprised Juventus in the last 16 with a 3-0 win in Turin.
"We suffered against Juventus, we suffered against Bayern, but we are now in the semi-finals," said Villarreal captain Raul Albiol, 36, the man-of-the-match in Munich.
"Now we can dream of going even further."
Villarreal are into the semi-finals for the first time since 2006.
They will play either Liverpool or Benfica in the last four. The English side take a 3-1 lead into Wednesday's second leg at Anfield.
The result means Bayern Munich exit the Champions League in the quarter-finals for the second year running.
"It is extremely bitter that we concede a goal despite this performance," said Bayern forward Thomas Mueller.
"We pressed, pressed, pressed and there was no way we were going to concede a goal."
Villarreal soaked up everything Bayern threw at their defence, aside from Lewandowski's strike early in the second half.
It was a heart-breaking night for Bayern, who dominated for most of the match before Chukwueze scored just four minutes after coming on.
Bayern started with urgency, but the Villarreal defence was alert to every threat.
Home coach Julian Nagelsmann changed formation, opting for a three-man defence instead of a back four.
- Villarreal pinned back -
Villarreal were pinned in their own half for most of the first half as Benjamin Pavard, Dayot Upamecano and Lucas Hernandez dictated play from the back.
Yet for all their domination of possession, a header by Jamal Musiala straight at Villarreal goalkeeper Geronimo Rulli was Bayern's only clear chance of a goalless first half.
Lewandowski, who was largely well marshalled, earned the first booking of the game.
The Villarreal back four worked tirelessly throughout, but left-back Pervis Estupinan had a particularly busy first half as Leroy Sane constantly probed down the flank.
Bayern finally broke the deadlock in the 52nd minute.
A loose pass out of defence only got as far as Kingsley Coman, who moved the ball to Mueller.
The Germany star slipped the ball into the path of Lewandowski, who managed to get his shot past two defenders and the diving Rulli.
The Poland striker let out a primal scream to celebrate his 13th goal in 10 Champions League games this season.
Bayern kept up the pressure as Mueller went close with a diving header and was left with his head in his hands, as was Coman when he fired over soon after.
Nagelsmann sent on some fresh legs in a bid to get a decisive second goal inside the 90 minutes by bringing on Serge Gnabry and Alphonso Davies.
However, Villarreal stunned the home crowd when Gerard Moreno broke down the left.
He put in a low cross which Chukwueze sent spinning over Neuer to send the Spaniards through.