Top seed Nadal secured an opening-set bagel in just 30 minutes, but Nishikori hit back to force a decider before the 20-time grand slam champion prevailed 6-0 2-6 6-2.
Nishikori hit only three winners as he was blown away in the first set, but broke twice in the second to ensure Nadal was taken to three sets in back-to-back matches for the first time in this tournament – having overcome Ilya Ivashka in the second round.
The world number three saved three break points from 0-40 down in the final set and Nishikori saw another two come and go, with a more clinical Nadal breaking twice to advance.
Nadal will now face unseeded Brit Cameron Norrie, who also won the first set 6-0 and was 5-3 down to David Goffin in the second when the Belgian retired due to a leg injury.
Newly-crowned Monte Carlo Masters champion Tsitsipas defeated Alex de Minaur 7-5 6-3, stretching his straight-sets winning streak to seven matches.
Next up for the second seed is a meeting with Felix Auger-Aliassime, who beat fellow Canadian Denis Shapovalov 6-2 6-3, while Jannik Sinner beat Roberto Bautista Agut 7-6 (11-9) 6-2.
Andrey Rublev, Diego Schwartzman and Pablo Carreno Busta also made it through.
Two seeds fell in the Serbia Open, with Federico Delbonis taking out Dusan Lajovic 6-3 2-6 6-4 and Taro Daniel defeating John Millman 3-6 6-2 6-3.
Gianluca Mager moved into the quarter-finals at the expense of Alexei Popyrin and Aslan Karatsev battled past Aljaz Bedene 6-3 4-6 7-6 (7-5) in Belgrade.