The Italian's spectacular victory ended world number three Nadal's 52-match winning streak in semi-finals on clay and earned him a place in the final against another Spaniard David Ferrer.
"I'm really happy about this match. I beat the best player on this surface," said the world number 28, who has been in good form this year since winning the Australian Open doubles title with Simone Bolelli last month.
"Rafa is always difficult. From the second set I played really well, and I tried to change a little bit to be more positive on court," he said after the match.
WTA Cincinnati
Halep suffers US Open injury scare after pulling out of Cincinatti with thigh injury
Nadal, who had complained of poor scheduling after Friday's quarter-final win over Uruguayan Pablo Cuevas finished at 3.30 a.m. on Saturday, admitted that he had struggled physically.
“It was a good first set,” said Nadal. “In general I was missing continuity. I think I had good and bad moments, also physically, which I don't really understand why.
“I didn't feel so well in my fitness starting in the second set; I'm getting tired before usual. I had no problem with my groin.
"I was just cramping in many places, which is strange because I've barely gotten cramps throughout my career...
“I have to accept the situation and work to get ready for what's next. I'm working well, I have the right attitude, I have to improve things and I think that I'm on the right path and closer to the level of game that I'm looking for.”
Fognini played a long last eight match that lasted more than three hours on Friday before he overcame Argentine Federico Delbonis.
"Right now I'm thinking in the now; that I've beaten Rafa," said Fognini.
"I'm super happy, and obviously tomorrow I will have to battle David, who has always beaten me ... I will obviously be happy if I win. If I lose, I will also leave with the good memories from this week in Rio," Fognini added after his win that took two hours and 17 minutes.
Second seed Ferrer reached the final with a 7-5 6-1 win over Austrian Andreas Haider-Maurer.
ATP Cincinnati
'I don't know if I'd announce my retirement' - Murray after painful Norrie loss
Norrie beats wasteful Murray in 'Battle of the Brits' to reach last 16