Nadal improved to 6-0 against Federer at Roland Garros, where they last met in 2011, and 24-15 overall.
Federer had won their past five matches, but all of those were on hard courts. This one was on clay, where Nadal is nearly unbeatable.
He is now 92-2 for his career in Paris as he pursues a record 12th title there and 18th Grand Slam trophy overall.
In Sunday's final, Nadal will face top-ranked Novak Djokovic or No. 4 Dominic Thiem