Nadal encountered little resistance in his 6-1, 6-0 victory over Portugal's Joao Sousa 6-1, 6-0 at Jockey Club Brasileiro.
Also making the semis was No. 2 seed Ferrer, who waited out a lengthy weather delay in the third set to close out a 4-6, 6-3, 6-3 win over Brazilian crowd favorite Thomaz Bellucci for an eighth straight win.
Ferrer drew Alexandr Dolgopolov after the Ukrainian upended No. 3 seed Fabio Fognini of Italy 6-1, 6-1 in a third-round match.
The loss snapped the Italian's string of four straight finals appearances in clay-court events.