Jannik Sinner came from behind to beat Carlos Alcaraz in three sets to advance to the Miami Open final.