Stade Rennais FC 2 - 2 Paris Saint-Germain
Rennes win 6-5 on penalties after extra time
Christopher Nkunku missed the decisive penalty in sudden death after all 11 kicks before him had been successful, handing Rennes their first piece of silverware since they won the same competition back in 1971.
Earlier, Julien Stéphan's team recovered superbly after falling two goals down by the midway point in the first half, with a Presnel Kimpembe own goal and Edson Mexer's header forcing extra time after Dani Alves and Neymar had put PSG firmly in control.
The triumph means Rennes will also be back in the UEFA Europa League next season, while Thomas Tuchel falls short of a domestic double in his first campaign with Paris, who wrapped up the Ligue 1 Conforama crown a week ago.
Mbappé sent off
A bad night for the capital club also saw Kylian Mbappé sent off late in extra time for a dangerous challenge on Damien Da Silva, and the France striker may now face a lengthy suspension.
Despite that, the evening had started perfectly for PSG, as Alves volleyed them into a 13th-minute lead, his strike from 20 yards finding the bottom corner as he raced off to celebrate in the arms of Tuchel.
Neymar then marked his first start in three months after injury with the second goal in the 21st minute, chipping Tomáš Koubek for his 21st goal of the season after being released by Ángel Di María, another player returning after injury.
Mexer heads in leveller
Yet Rennes regrouped and finally threatened when M'Baye Niang hit the post in the 38th minute, the prelude to them pulling one back two minutes later when Hamari Traoré crossed from the right and Kimpembe sliced the ball into his own net.
The Bretons - hammered by PSG in this competition in each of the last two seasons - continued to press after the break and were rewarded with the equaliser in the 66th minute as a Clément Grenier cross was headed in by Mexer. He doesn't get many goals, but what a precious one that proved to be as it took the match to extra time.
Neymar set up Mbappé to hit the post in the 99th minute before Hatem Ben Arfa sent a shot fizzing just wide as the drama continued, but Mbappé walked in the 118th minute and Rennes seized the moment as it went to penalties. Niang, Ben Arfa, Grenier, James Léa-Siliki, Ramy Bensebaini and Ismaïla Sarr all held their nerve from the spot, and Nkunku - a late substitute - was the one to crack.
THE PLAYER: Hatem Ben Arfa
On a night when there were so many entertainers on the field, and as Mbappé's red card is likely to dominate so many headlines, Ben Arfa's performance deserves to be singled out. He was brilliant for so much of the game against the club where he endured a miserable two-season spell. He also kept his nerve to score his penalty, and he will savour this medal.
THE STAT: 48
After 48 years, Rennes finally have their hands on a major trophy again. It is their third Coupe de France overall, and comes after three previous defeats in finals at the Stade de France in the last decade - two Coupe de France finals against EA Guingamp in 2009 and 2014, and the 2013 Coupe de la Ligue against AS Saint-Etienne.