Nadal needed two hours and 47 minutes to get the better of Latvia’s Gulbis in the Italian capital, eventually sealing a 6-4 3-6 6-4 victory.
Gulbis, who beat world number one and French Open champion Roger Federer earlier this week, fired down 14 aces to none from Nadal, but could only convert one of his seven break points.
That was enough to help him level the match after Nadal had taken a hard-fought opener, but Gulbis was firmly on the back foot in the decider.
Nadal eventually took one of his six break points to edge ahead and held his nerve to complete a tough win.
In the day’s first semi-final, 13th seed David Ferrer continued his impressive form this week with a 7-5 6-3 victory over fellow Spaniard Fernando Verdasco.
A hard-fought first set produced five breaks of serve and Ferrer came out on top by converting all three of the break points he created.
Three more breaks followed in the second and Ferrer held his nerve to claim revenge over left-hander Verdasco, who had won the pair’s last meeting in the semi-finals in Barcelona last week on his way to the title.