Marcin Bulka was the hero as he denied Leandro Paredes and Xavi Simons in the shoot-out to send the visitor through to the quarter-finals.
The PSG loanee ended the holder's 14-match winning run in the competition, while halting its quest for a third straight triumph.
Mauricio Pochettino's side also failed to score in a Coupe de France tie for the first time since losing 1-0 to Lille in the 2011 final.
Unbeaten in its eight previous meetings with Nice in all competitions, PSG welcomed Lionel Messi back into the starting line-up for the first time in a month.
The Argentina skipper was involved in the host side's best chance of the first half as he combined with Ander Herrera to tee up Marco Verratti, who swept a shot just wide of the far post.
At the other end, Amine Gouiri tried his luck with an ambitious effort from distance, but it flew straight into the arms of Gianluigi Donnarumma.
The Italy international was also called into action just after the restart, producing smart reflexes to deny Justin Kluivert from a tight angle.
Having watched his side register just a single shot on target, Pochettino introduced Kylian Mbappe in the 63rd minute for his 200th PSG appearance.
But it was the visitor which went close to snatching a dramatic winner, Danilo Pereira blocking Kluivert with five minutes remaining, while Jean-Clair Todibo got in the way of Messi's goal-bound effort at the other end.
The first five kicks of the subsequent shoot-out were successful before Bulka kept out Paredes' tame effort, although Donnarumma immediately denied Andy Delort in return.
Dante's timely Panenka put Nice in control as it went into sudden death, before Simons' attempt was beaten away by Bulka.