The Spaniard had never been beaten in the semi-finals of the clay-court grand slam, which he has won a record 12 times, though Schwartzman was the only man to have defeated him on his favoured surface this year.
Any hopes of a repeat of the Argentine's win in Rome last month were soon dashed, though, as Schwartzman failed to hold in the first two games of an opening set that went on for over an hour before Nadal emerged victorious.
The world No.2 was just as dominant in the next set and, despite a topsy-turvy third, Nadal won 6-3 6-3 7-6 (7-0) to leave him one win from a record-equalling 20th grand slam.
Schwartzman had a break point on two occasions in Nadal's opening game but, after 14 minutes, the second seed held and soon moved 2-0 up.
Another break of serve then came, but Nadal again hit back and went on to seize the set at the third time of asking.
Schwartzman played the shot of the match with an unfathomable chopped forehand winner down the line in the next set, but it was only a mere highlight as Nadal refused to let up, a second break putting him one set from victory.
Nadal has never lost when two sets up on clay but, after forging ahead in the third with a break, he failed to hold in successive service games, with two untimely unforced errors in the latter game giving Schwartzman a glimmer of hope.
The No.12 seed had three break points to move 6-5 up but Nadal closed the door each time, and it was the favourite who showed a killer instinct in the tie-break to tee up a final against Novak Djokovic, who beat Stefanos Tsitsipas in a five-set semi-final battle on Saturday (AEST).
"I know against Diego it's very difficult until the end," Nadal said on court afterwards.
"He's one of the players that makes more breaks [than anyone on] the tour.
"Three weeks ago, I lost in Rome so I expected a very tough match. I'm happy with the way I played, I think I have been improving."