Nadal defeated Santiago Giraldo of Colombia 7-6 (6), 6-3 Friday, and Fish beat Bernard Tomic of Australia 6-7 (5), 6-4, 6-1.
The other semifinal will feature David Ferrer against Andy Murray.
Ferrer defeated seventh-seeded Radek Stepanek 6-2, 7-6 (3), while the fourth-ranked Murray defeated David Nalbandian 6-4, 7-5.
The defending champion Nadal was pushed early by the 53rd-ranked Giraldo, who forced a first-set tiebreaker at Ariake Colosseum. In the second set, the Spaniard broke early but Giraldo had a chance to break back late in the match.
“It was a tough first set. I thought I could play more relaxed in the second set,” Nadal said. “He is a very graceful player who can hit winners from everywhere.”
The Colombian earned a break point with Nadal serving for the match at 5-3, but the 10-time Grand Slam champion hit a passing winner to get to deuce and ended the match.
Fish is looking for his second title of the season. He won in Atlanta and reached the final in Los Angeles and Montreal.
Against Tomic, the eighth-ranked Fish broke late in the second set despite trailing 40-0, and served out the set.
“I just had to hang in there and fight as hard as I could and try to take advantage of any opportunity I had there late in the second set,” Fish said. “I think it was 4-4 and I’m pretty sure he was up 40-0 at 4-4 with a serve and I came back to win that game. That was sort of a turning point.”