Almagro, the No. 6 seed, took out the fourth-seeded Nishikori 7-6 (7-2), 5-7, 6-3. He was able to finish off five of his six break opportunities, including both chances he had in the third set.
Nishikori had a pair of breaks in each the first and second sets but Almagro lost only five points over four service games in the third set to gain a spot in the semifinals.
Almagro will next play No. 1-seeded Juan Martin del Potro, who came away a 4-6, 6-4, 6-2 winner over Alexandr Dolgopolov. Del Potro had his serve broken three times in losing the first set before winning nearly two-thirds of the points on serve the rest of the way.
Del Potro, who also came from behind to beat Dolgopolov earlier this year, is 5-0 in his career versus the Ukrainian.
Third-seeded Milos Raonic, who lost to Nishikori in last year's Japan Open final, defeated Lukas Lacko 6-3, 6-3 in 62 minutes, losing 10 points in nine games serving. Ivan Dodig got past Jarkko Nieminen 6-2, 7-6 (7-3) in the fourth quarterfinal.
Saturday's semifinals will mark the first career meeting between del Potro and Almagro. Dodig won both times he played Raonic.