The fourth-seeded Ferrer dispatched another Spaniard, Nicolas Almagro, 6-3, 6-4 in the first semi match, and the top-seeded Nadal followed up with a 6-3, 6-2 win over Ivan Dodig of Croatia.
Nadal won 60 of the 97 total points Saturday for his 28th consecutive match win on the clay courts at Barcelona and 500th ATP career victory.
Ferrer broke Almagro's serve three times.
Nadal beat Ferrer last week in the finals of the Monte Carlo Masters.
Swim Week Miami Beach 2014 [PHOTOS]