Surviving the gruelling quarter-final, which took two hours and 17 minutes, meant Alcaraz has made the final four of the event for the second time and reached a 12th ATP 1000 semi-final.
The 22-year-old will face 2021 champion Alexander Zverev for a place in the final, after the world number three overcame illness to beat American Ben Shelton in straight sets.
The German needed a medical timeout at the start of the second set after appearing to struggle with his breathing.
The break did little to hinder his performance, as Zverev wrapped up a 6-2 6-2 win in just one hour and 17 minutes.
“Right now, I’m not feeling too great. I’m not sure what happened,” said Zverev.
“I came out today and probably felt the best I’ve felt in a few months. I was feeling the ball incredibly well from both sides.
“In the first set, I started feeling not so great, and it got progressively worse. But I’m in the semi-finals, and I’ll do everything I can to be 100% tomorrow.”
Wimbledon champion Jannik Sinner and Frenchman Terence Atmane meet in the other semi-final.