The top-seeded Nadal, who lost the title to Novak Djokovic last year, dropped his opening service game and trailed 3-1 in the first set. But from 4-4, the Spaniard reeled off six straight games, then the Russian qualifier broke his serve again.
"I think I started little bit slow," Nadal said. "But he was playing very, very aggressive, hitting very strong, with no mistakes."
Nadal's body language suggested he was far from happy with his performance. At times he looked glum-faced, other times annoyed with his shots. His serve was vulnerable, too, as he conceded four break-point chances -- including in consecutive service games during the second set. He clinched victory with a crisp forehand winner.
"I felt comfortable in the second set," Nadal said. "I think I was playing better. "
Federer, returning to the tournament for the first time since 2011, was far more ruthless as he raced to 5-0 in 17 minutes. He improved his record against the 35-year-old Stepanek to 14-2. The Czech has not beaten Federer in six years.
"A bit surprised how well it went. On clay, when you have the upper hand from the baseline, it's kind of hard to get out of it," Federer said. "That's kind of how it was for Radek. I had a good start to both sets, I was solid on my own service games. It was clearly a good match to start my clay-court campaign."
The fourth-seeded Federer next plays another Czech, Lukas Rosol, who beat Frenchman Michael Llodra 6-4, 6-4, while Nadal plays Italian Andreas Seppi, who won 7-6 (5), 5-7, 6-4 against Spaniard Pablo Andujar.
Federer has never won Monte Carlo, losing in three straight finals to Nadal from 2006-08. They can't meet again until the final.
Australian Open champion Stanislas Wawrinka, seeded third, was slightly faster than Federer, needing only 46 minutes to thrash Marin Cilic of Croatia 6-0, 6-2.
"I expected a more difficult first round against him. I felt good on the court," Wawrinka said. "I know that if I feel good physically, then I am able to put a lot of pressure on my opponent."
Eighth-seeded Milos Raonic of Canada, No. 10 Fabio Fognini of Italy, No. 11 Tommy Robredo, No. 12 Grigor Dimitrov of Bulgaria and No. 15 Nicolas Almagro -- both Spanish -- also advanced to the third round.
Raonic rallied to beat Lu Yen-Hsun of Taiwan 6-7 (4), 6-2, 6-1; Fognini downed Roberto Bautista Agut of Spain 7-6 (6), 6-4; Robredo won 4-6, 6-0, 6-1 against Julien Benneteau of France; Dimitrov downed Spaniard Albert Ramos 4-6, 6-3, 6-4 and Almagro beat Nicolas Mahut, 7-6 (3), 6-3.
Grand Prix Hassan II winner Guillermo Garcia-Lopez beat No. 17 Alexandr Dolgopolov 6-1, 7-5, and Spaniard Pablo Carreno Busta next faces defending champion Novak Djokovic after winning 6-3, 7-6 (6) against Gael Monfils.