Murray, who beat Nadal to win last year’s final, will meet the winner of Saturday’s other semi-final between Novak Djokovic and Kei Nishikori on Sunday.
World number two Murray broke Nadal in the Spaniard’s second service game but lost his serve before breaking his opponent again to clinch the first set.
The Scot broke Nadal’s third service game in the second and held his serve to knock out the home favorite, taking advantage of a second match point after spurning the first.