Schwartzman, 26, won 6-4, 6-2 in 87 minutes in the quarter-final for his first win against former US Open finalist Nishikori, the sixth seed, in Rome.
The 24th-ranked one-time French Open quarter-finalist has not dropped a set so far on the red clay of the Foro Italico and next faces either world number one Novak Djokovic or compatriot Juan Martin del Potro for a place in the final.
World number seven Nishikori paid for a string of unforced errors, with 28 in total, double that of Schwartzman.
This year’s French Open gets underway on May 26 in Roland Garros.
Results from the ATP and WTA Italian Open in Rome on Friday (x denotes seeding):
Kiki Bertens (NED x6) bt Naomi Osaka (JPN x1) walkover
Diego Schwartzman (ARG) bt Kei Nishikori (JPN x6) 6-4, 6-2
Stefanos Tsitsipas (GRE x8) bt Roger Federer (SUI x3) walkover