Top seed Nadal has struggled through much of the tournament but was far too good for dogged Dimitrov, the Spaniard quickly powering to a 6-2 6-2 victory and a showdown with world number two Djokovic.
Serb Djokovic survived a three-hour dogfight and one-set deficit with big-serving Canadian Milos Raonic to make Sunday's final. He was subjected to an onslaught of power but eventually came through to win 6-7(5) 7-6(4) 6-3.
"It's a big win because it gives me strength and belief that I can hopefully carry towards the final and the rest the season," Djokovic, bidding for a third Rome title, said.
"I can't remember the last time I felt so helpless in a return game. I couldn't predict his serve at all."
Nadal had survived a scare against Britain's Andy Murray on Friday while Dimitrov had been handed his semi-final spot when Tommy Haas retired after losing the first set of their quarter-final, but it was Nadal who looked the fresher of the two.
The 27-year-old barely put a shot out of place in a masterful first set display that lasted just over 30 minutes.
It did not get much better in the second set for 23-year-old Dimitrov, who immediately lost his serve and failed to get any sort of foothold in the match against an opponent who had beaten him on their four other meetings.
Nadal is gunning for his eighth victory in Rome and broke again in game five to make it 4-1 as Dimitrov struggled to get hold of the ball.
It was now only a matter of when rather than if and Nadal was in no mood to waste time, winning his serve when Dimitrov duffed a weak backhand into the net in the following game.
The Bulgarian just about won his serve to keep the match alive and put up a brave fight in the eighth game with Nadal serving for the match, but on his second match point the seven-time champion walloped a powerful cross-court forehand that sealed an easy win and gave the fans the final they were hoping for.
- Sports & Recreation