The Spaniard beat the Canadian in straight sets with a superb 6-4 7-6 6-4.
The 14-time Grand Slam winner, who has been troubled by injuries in recent years, saved six set points in the second set before dominating the third.
He will now face 15th seed Gridor Dimitrov on Friday after he came through against Belgium’s David Goffin.
Nadal is on course to meet long-time rival Roger Federer in Sunday’s final if the Swiss can stave off his compatriot Stan Wawrinka tomorrow.
If ‘Rafa’ wins the championship, he will become the first man in the Open era to win each of the Grand Slams twice.