After defeating Nadal, his idol, in the quarterfinals, the 19-year-old Alcaraz rallied to beat Djokovic 6-7 (5), 7-5, 7-6 (5) in a match that lasted more than 3 1/2 hours to reach the Madrid Open final.
Alcaraz converted on his third match point to clinch the victory in front of a raucous home crowd on the Caja Magica center court.
A win on Sunday will give Alcaraz his fourth title this season, the most of any player.
Alcaraz, the youngest player in the top 10 since Nadal in 2005, has won this year in Miami, Rio de Janeiro and Barcelona.
He beat Nadal for the first time on Friday, and triumphed against Djokovic in their first match, becoming just the fifth player to defeat the two superstars on back-to-back days — and the first to do it since Roger Federer achieved the feat at the 2010 ATP Finals.
Alcaraz also became the youngest player to defeat an ATP World No. 1 since Nadal beat Federer in the 2005 French Open semifinal on his 19th birthday.
Djokovic remains without a title this season as he continues to try to regain his best form going into his title defense at the French Open in nine days.
The Associated Press contributed to this report.