Teenage star Alcaraz became the first player to defeat Nadal and Djokovic back-to-back, while he is the youngest player to defeat a world number one in 17 years.
Alcaraz has now won his last five matches against top-10 opponents and will next take on world number one Djokovic, who earlier defeated Hubert Hurkacz, for a place in Sunday's final