Nadal could meet top-seeded Novak Djokovic in a rematch of last year's final. The Serb took on sixth-seeded Fernando Verdasco of Spain in the other semifinal.
Nadal leads Ferrer 10-3 overall, and had little trouble after conceding the first game to love.
The 23-year-old Nadal clinched victory on his second match point after the 11th-seeded Ferrer hit a forehand into the net as he attempted to pin Nadal to the back of the court.
Nadal has won 31 successive matches in Monaco.
Rain delayed the match for several minutes, and Ferrer appeared the more sprightly player when play started to easily hold serve.
Nadal held, then broke to lead 2-1 before going on to take the set in little more than 30 minutes when Ferrer's backhand went wide.
Nadal broke to lead 2-1 in the second set, but Ferrer broke straight back by wrong-footing Nadal with a stinging passing shot.
Ferrer made two unforced errors in the next game to drop serve again, and Nadal held to love for a 4-2 lead. He then took Ferrer's serve for the fifth time to lead 5-2 and served for the match.
Ferrer's backhand pass down the line gave him a break point that he converted. But he was then broken for a sixth time as Nadal sealed victory on his second match point.