Ante Rebic scored twice as Eintracht Frankfurt shocked Bayern Munich to win the German Cup final.
The Croatia striker pounced on James Rodriguez's error to give Eintracht the lead, but Robert Lewandowski equalised.
Rebic clipped in his second before Bayern were denied a penalty in a disputed VAR call late on as Kevin-Prince Boateng caught Javi Martinez.
Referee Felix Zwayer rewatched the incident and gave a corner - and from it, Mihat Gacinovic broke to score.
That third Eintracht goal sparked a pitch invasion by emotional fans celebrating their first German Cup triumph since 1988.
It was not clear initially if Zwayer had blown the final whistle, although the game did not restart after the goal.
Bayern started the match as favourites, having finished 35 points above Eintracht in this season's league standings, and Lewandowski hit the underside of the bar with an early free-kick.
But it was Rebic who scored first, dispossessing Rodriguez and exchanging passes with Boateng before racing clear to slot a low shot past goalkeeper Sven Ulreich.
Lewandowski's equaliser - a record-equalling fourth German Cup final goal - came eight minutes after half-time when he met Joshua Kimmich's right-wing cut-back first time to drive in via a deflection off Omar Mascarell.
Bayern pressed for a winner as the game entered its final 15 minutes. Lewandowski turned one chance wide and Mats Hummels looped a header against the crossbar from a corner.
But with eight minutes to go, Rebic burst between Hummels and Niklas Sule to reach Boateng's angled through pass and nick the ball beyond the advancing Ulreich - who has been deputising for the injured Manuel Neuer since September.
There was further drama three minutes into stoppage time following Boateng's challenge on Martinez.
Television replays showed clear contact, yet Zwayer, having referred to a pitchside monitor, refused to change his initial decision to give a corner.
Goalkeeper Ulreich, who had stayed forward from a previous set-piece, was then left helpless as Eintracht cleared, and substitute Gacinovic raced more than 70 yards to run the ball into the unguarded Bayern goal.
Latest Stories
-
Chale Wote Street Art Festival: A call for artists ahead of 2024 edition
1 hour -
Floods: We’re exposed but my team and I are ‘running’ to catch up – Oppong Nkrumah
1 hour -
5 traits of sweet, committed men that may seem like red flags at first
3 hours -
We met on Twitter and our first date was a week-long road trip
3 hours -
The biggest mistake people make when meeting someone in person after talking online
3 hours -
I traveled 500 miles for a first date
3 hours -
My cousin saved my life and she never knew
3 hours -
Top UN court orders Israel to allow food and medical aid into Gaza
3 hours -
Fallen ‘Crypto King’ Sam Bankman-Fried gets 25 years for fraud
3 hours -
The architecture we have used to tackle housing deficit has not been robust enough – Oppong Nkrumah
3 hours -
Government suspends implementation of price Stabilisation and Recovery levy on petroleum products
4 hours -
Takoradi traders lament over low sales ahead of Easter
6 hours -
I’ve served Effia constituency well – Joseph Cudjoe
6 hours -
Michael Ampadu: One Student, One Tablet initiative will shape the future of education and innovation
6 hours -
I will partner you for development – Alan tells TUC
6 hours