Nadal had to battle all the way to get past fellow Spaniard Pablo Andujar 2-6, 6-3, 7-6 (12-10) in the first semifinal match at Jockey Club Brasileiro. The 40th-ranked Andujar took the 13-time Grand Slam champion to a pair of match points in the tiebreaker before finally succumbing.
Nadal's opponent in Sunday's final will be Ukrainian Alexandr Dolgopolov, who recorded a surprisingly easy 6-4, 6-4 decision over Ferrer, snapping the fourth-ranked Spaniard's eight-match winning streak.
Dolgopolov will be seeking his third career title. He is 0-4 lifetime against Nadal.