The Spaniard had been beaten in four consecutive semi-finals, including by Tsitsipas at the Madrid Open, but recorded an emphatic victory in one hour and 43 minutes in Rome to move one match away from winning his first ATP Tour title in 2019.
Tsitsipas, who showed his frustration as he argued a line call with the umpire in the second set, had 27 unforced errors to just 17 winners and struggled to find a foothold in the match after making a poor start, with Nadal throwing in some spectacular shots at key moments.
Nadal, an eight-time champion at this tournament in Rome, will face Novak Djokovic in the final — the Serb made it through a tough test against Diego Schwartzman — one week from the start of his attempt to win a record 12th French Open crown at Roland Garros.
The early games proved crucial in the first set, with Nadal taking a tightly contested opener, breaking with his first opportunity with a beautiful forehand down the line, before saving two break points to go 3-0 up.
There were no chances for either player from then on, and the world No.2 dug in while serving for the set, recovering from 0-30 down and needing only one set point to move in front thanks to an unreturned serve.
Nadal missed his first two chances to move ahead in game three of the second set, but made no mistake when another Tsitsipas error gave him a third break chance, with the Greek finding the net in reply to a thumping forehand.
Tsitsipas did at least hold three times from there to force Nadal to serve the match out, but the 32-year-old did exactly that without dropping a point as he converted the first of his three match points when his opponent sent a return long, reaching his 50th Masters 1000 final.