Swiss second seed Federer repelled Canadian fifth seed Milos Raonic 6-2 6-3 in one hour eight minutes, in a surprisingly lacklustre clash.
Raonic's booming serve abandoned him, as he landed his first ball just 44 per cent of the time at the ATP 1000 hard-court event.
Federer, meanwhile, served at 63 per cent, and won all bar four points when he did land it, fending off the lone break point Raonic was able to concoct.
The 17-time major winner Federer won 18 consecutive points on serve, with four love service holds and two breaks of Raonic's serve taking him to the first set.
Serving first in the second set, Federer led 30-0 before Raonic finally won a point on return - and later that same game would have a break chance, only for the 33-year-old to get out of trouble.
Earlier, sixth seed Ferrer downed France's Julien Benneteau 6-3 6-2 in one hour 11 minutes.
The Spaniard, 32, broke Benneteau's serve twice in a row from 3-3 in the first set to take the lead.
Ferrer closed on victory when he broke again in the fourth game of the second set, and on match point number five, he booked his spot in a Masters final for a seventh time.
Federer is eyeing off a 22nd Masters title in his 39th final.
The Swiss has a 15-0 career head-to-head record against Ferrer, with Federer winning their most recent meeting in Toronto earlier in August in three sets.