The world number one dropped the opening set against the eighth seed but he powered back to claim a 2-6 6-1 7-6 6-1 win at Roland Garros.
Despite holding the top spot in the ATP world rankings since November, Murray has exceeded pre-tournament expectations in Paris but he will now have the belief that he can reach a second successive final.
During the early stages, however, he was overpowered by Nishikori, who broke Murray's serve twice with some relentless play from the back of the court.
Murray eventually found his stride as he breezed through the second and the course of the match was effectively decided towards the end of the third.
The Scot broke Nishikori's serve to lead 6-5, only to allow the Japanese hitter to strike back and force a tie-break, but Murray would then reel off seven straight points to move closer to the last four.
Nishikori broke serve at the start of the fourth, but Murray was intent on making light work of the rest of the contest and he won six games in a row to seal an excellent win.