Rennes stunned Paris St-Germain on penalties to win their first French Cup since 1971.
Ligue 1 champions PSG, who had won the cup for the past four years, led 2-0 through a Dani Alves volley and chip from Neymar, starting his first game since January following a foot injury.
But Rennes levelled through a Presnel Kimpembe own goal and Mexer header.
Kylian Mbappe was sent off for a bad foul in extra time, while Christopher Nkunku missed the decisive penalty.
PSG, who were looking for a fourth domestic double in five years, looked in complete control as they took a 2-0 lead within 21 minutes.
Alves hit a stunning volley from Neymar’s corner, before the forward lobbed goalkeeper Tomas Koubek from the edge of the box to double their lead.
But the game was turned around when Kimpembe turned a cross into his own net and Mexer scored the equaliser.
Thomas Tuchel’s champions had a chance to win the game in extra time when Mbappe hit the post from close range.
And they had the 20-year-old sent off two minutes from the end after a dangerous foul on the side of Damien da Silva’s knee.
Just before the shootout, Nkunku, who has been linked with a move to Rennes this summer, replaced teenager Moussa Diaby – who had only been on the pitch for 15 minutes.
And after the first 11 players scored their penalties, the midfielder smashed a dreadful kick over the bar as mid-table Rennes won the cup for the third time in their history.
It was a first cup final defeat since 2011 for PSG, who had won five consecutive French League Cups before going out in the quarter-finals this year.