Nadal overcame the loss of the first set to beat Nicolas Almagro 4-6 6-2 6-2, while his great rival overcame a David Ferrer fightback to win 7-5 3-6 6-3.
Nadal, who is now 14-0 on clay this season following his recent victories in Monte Carlo and Rome, moved to within one match of winning a record 18th Masters title with a battling success against his compatriot.
However, he needed to overcome a string of early errors to edge past the unseeded Almagro, eventually pulling through in two hours and 15 minutes.