PSG, who had won the title in the past four years, led 2-0 after just 21 minutes through a Dani Alves volley and a chip from Neymar who was starting his first game since January.
However, Rennes forced the match into injury time with a Presnel Kimpembe own goal and Mexer header.
Things turned from bad to worse for the Ligue 1 champions when Kylian Mbappe was sent off for a bad foul in extra time, and Christopher Nkunku missed the decisive penalty giving Rennes a 6-5 win and a third French Cup title in their history.
⬇️ Get the latest Paris Saint-Germain Live scores, commentary, results and stats on the Futaa Live App, with over 1000 teams, 100+ leagues and the lowest data usage. Download it now at the Google Play store, it’s only 3mb!