It was the first time in nine matches on clay this year that Nadal dropped a set.
Routinely putting first serves in at 215 kph (133 mph), Gulbis didn't allow Nadal his usual rhythm on return games and the Spaniard converted only two of 12 break points.
Nadal broke Gulbis in the opening game of the match and had to wait until the final game before doing it again, when a backhand from the Latvian sailed wide.
Upon sealing the 2 hour, 46-minute marathon, Nadal to let out a big scream and jump with a series of fist pumps.
In the title match, Nadal will meet fellow Spaniard David Ferrer, who beat a sluggish Fernando Verdasco 7-5, 6-3 to advance to the first Masters Series final of his career.
The 21-year-old Gulbis was attempting to become the first player to beat both Roger Federer and Nadal in the same tournament, having stunned the top-ranked Swiss in the second round.
While the match against Federer was error-ridden on both sides, this match provided a sharp contrast in styles, with Nadal providing his usual steady and mostly error-free play and Gulbis going for winners at will.
Gulbis held a huge 50-18 edge in winners but committed 56 unforced errors to Nadal's 23. Gulbis also served 13 aces to Nadal's none.
Nadal broke Gulbis in the opening game of the match when the Latvian double faulted and maintained that lead to win the first set.
In the second set, Gulbis started swinging more freely and broke Nadal in the third game when the Spaniard ran around his background and missed a difficult inside out angled forehand into the net.
With the soldout crowd of 10,500 inside the new stadium at the Foro Italico behind him, Gulbis saved four break points at 2-3 in the third set with a variety of big serves, one forehand winner and an expert half-volley drop-shot winner.
Gulbis saved another break point at 3-4 with a big first serve out wide that Nadal returned long. But he fell behind 0-40 on his next service game, no longer able to run down Nadal's drop shots, and succumbed to apparent exhaustion on Nadal's first match point.
Against Ferrer, Nadal will be aiming for his fifth Rome title in six years.
His only loss at the Foro Italico came against fellow Spaniard Juan Carlos Ferrero in the opening round two years ago, when a foot blister slowed him.
Earlier, Verdasco jumped out to a 5-1 lead over his fellow Spaniard, but then lost six straight games to give Ferrer the set and control of the match.
Verdasco appeared worn out from his marathon-like quarterfinal victory over Novak Djokovic a day earlier - a match that lasted 3 hours, 18 minutes.
“It was a very physical match against Novak yesterday. I was feeling good mentally, but my body was not feeling good,” Verdasco said. “I wasn't just tired after 5-1. I was tired ever since I woke up this morning.
“He was making unforced errors (at the start). I wasn't playing unbelievable.” The sixth-seeded Verdasco had reached the final of his last two tournaments - losing to Nadal in Monte Carlo two weeks ago and beating Robin Soderling to win the Barcelona Open last weekend. He showed little of the blistering groundstrokes of his recent matches, however, and had trouble running down Ferrer's frequent drop shots.
Verdasco managed to win a 29-point rally in the final game, but then had to lean on his racket to gather his breath. On the next point, he hit a forehand wide of the doubles alley, and Ferrer then converted his first match point with a routine put-away volley.
Ferrer has not dropped a set this week and leads the tour with 23 wins on clay this season.
Despite the loss, Verdasco will be one of the favorites for the upcoming Madrid Masters and the French Open, which begins on May 23.
“These were the best three weeks of my life and my career,” Verdasco said. “I need to stay positive, recover for a few days and practice hard to be perfect for Madrid and Roland Garros.”
In Stuttgart, Germany, Justine Henin beat Shahar Peer of Israel 6-3, 6-2 at the Porsche Grand Prix to advance to her third final in five tournaments since her comeback in January from retirement.
Peer got no presents for her 23rd birthday on Saturday from the former No. 1 in the world, who is looking for her first title of the year.
Samantha Stosur of Australia plays Russian qualifier Anna Lapushchenkova in the second semifinal.
Henin was runner-up in Brisbane and at the Australian Open in January, her first two tournaments after returning from 18 months in retirement. The Belgian won the Stuttgart event in 2007 and was a finalist in 2001 and 2003. She was a wild-card entry this year.
“I made mistakes but I was good enough today,” Henin said. “I just have to keep going and to be aggressive.
When I am aggressive my game is so much better.
“It's great to be playing good tennis here and to be in the final again. I hope it continues so,” she said.
Henin had a scary moment on her first match point, when she took a wrong step on the red clay and fell while trying to reach a shot. Peer's ball hit the line, but on her next match point, Henin fired a backhand return winner down the line.
She finished with 28 winners, twice as many as Peer.
Henin has four French Open titles among her seven major championships and began her preparation on clay in Stuttgart.
Although the indoor court makes Stuttgart conditions very different from those in Paris, Henin said it was good to get some matches under her belt.
Henin is playing with a special sling to protect her broken little finger on her left, non-playing hand.