Since losing to Guillermo Coria on his tournament debut in 2003, Nadal has won 11 titles in Monte-Carlo with only Novak Djokovic and David Ferrer able to prevent him from doing so.
And at odds of 1/12 to win on Saturday, Nadal had been expected to make yet another final and likely win it, with Dusan Lajovic lying in wait.
However, the unpredictable Fognini had other ideas, edging a tight first set before romping to the second, despite failing to serve out the match when leading 5-0.
It will be Fognini's first final at Masters 1000 level, six years on from the biggest success of his career - at 500 level - in Germany.
Nadal told the media: "I probably played one of the worst matches on clay in 14 years.
"When that happens, you have to lose. And today I deserved to lose because I played against a player who was better than me today."
From trailing 3-1 in the first set, world number 18 Fognini won 11 of the next 14 games to his fourth victory in 15 career meetings with the Spaniard.
And his win was all the more remarkable given he entered the tournament in poor form and had trailed his first-round opponent Andrey Rublev 6-4 4-1 before rallying.
Fognini told a press conference: "If you told me at the beginning of the week I will see you on Sunday, I would have laughed in your face.
"Sometimes I won a few matches (against him) - one crazy one at the US Open and two times on clay.
"So I knew I had nothing to lose, because of course, especially when you with him on clay, it's always really tough."
Earlier, Lajovic beat 10th seed Daniil Medvedev 7-5 6-1 to reach his first singles final on the ATP Tour.