His victory meant Spain will have at least one representative in Sunday's final as Nadal next faces unseeded compatriot David Ferrer, who saved four match points on his way to a 6-2, 3-6, 7-5 win over Alberto Martin.
Nadal, who has won four of his six claycourt tournaments this year, including the Monte Carlo Masters, began as clear favourite against a player who had never progressed beyond the third round in Rome.
The match started according to the form book, with 18-year-old Nadal dominating from the back of the court. When he served for the set in the 10th game, however, Stepanek conjured up a crosscourt pass and a dropshot winner to break back.
The Czech was out-thinking his opponent, drawing Nadal into the net in the 12th game before dispatching a forehand winner down the line and using the same tactic on the next point to claim the first set.
Nadal, who had dropped only eight games in his previous three matches, seemed unconcerned by going a set down and quickly regrouped to race through the second in just over half an hour.
Stepanek tried to fight his way back into
"It was a complicated match. I didn't serve well at the end of the first set, but I'm pleased with the way I held myself together," Nadal told reporters.
Earlier, Andre Agassi cruised past Slovakia's Dominik Hrbaty 6-3, 6-3.
The American sixth seed has not dropped a set in the tournament and remains on course to reclaim the title he won in 2002.
Hrbaty played well to knock out Britain's Tim Henman in the previous round, but never came to grips with the swirling wind and committed a series of unforced errors to give Agassi a break of serve in the fifth game.
The second set was a more see-saw affair, involving five breaks of serve. Agassi eventually seized control in the eighth game when Hrbaty put a backhand over the baseline.
"The conditions were difficult out there today -- the wind was moving everything. It was important to make as few mistakes as possible," Agassi said.
He next meets ninth seed Guillermo Coria or Fernando Verdasco of Spain.