He was joined in the third round by top-ranked Andy Murray, who returned from an elbow injury to beat Gilles Muller of Luxembourg 7-5, 7-5.
Murray, the French Open finalist last year, has never won here, while the fourth-seeded Nadal is aiming for a 10th title in Monte Carlo.
He looked to be coasting until Edmund found his range with huge forehands. The third set was intense, with three straight breaks of serve from 2-2, until the nine-time French Open champion drew on his vastly superior experience on clay.
The Spaniard's relief was evident when he secured victory on his first match point.
After Edmund patted a return into the net, Nadal tilted his head back and raised his arms in the air.
"He hit so strong, a lot of big forehands from everywhere. So well done to him," Nadal said. "When you play against a player that wants to hits every ball, sometimes you are in his hands. He has all the possibilities to become a top player."
Nadal's next match could be tough, too. He faces 14th-seeded Alexander Zverev, the 19-year-old German who pushed him to five sets in the third round at this year's Australian Open.
"He's a complete player," Nadal said. "I need to play very well."
Nadal is looking for this first title of the year after losing in three finals — including defeats to Roger Federer at the Australian Open and the Miami Open. He will not be able to get his revenge on Federer here, since the 18-time Grand Slam champion is skipping the tournament. Federer is playing very little on clay before his bid for another Wimbledon title.
The 22-year-old Edmund, who is ranked 45th, was happy with the way he pushed Nadal in their first ever meeting.
"It's good I'm able to play like that. Lots of positives to take and things to work on," Edmund said. "He's arguably the best player of all time on clay. In the beginning I was too timid, but by the end my shots were really flowing."
Earlier, Murray looked a bit sluggish early on, dropping serve in the opening game. He saved two set points in the ninth but then broke and held to love to move 6-5 up.
"The first service game was obviously not ideal, but when you are coming back from not serving for a few weeks that's normal," Murray said. "My elbow's always a bit sore, that's nothing to do with this week or the last two years."
Murray's enforced absence at least gave him the added bonus of spending more time with his wife and young daughter.
"Sometimes it's tricky for the tennis players because of how much we travel and the schedule can be difficult," he said. "I've spent a lot of time with my family, which I've enjoyed ... and which hopefully they have as well."
Murray took the first set on Muller's serve when, having done well to retrieve two drop shots from his opponent, Muller missed an easy smash at the net. He whacked his racket against his shoe in frustration and then smashed it on the ground, buckling it in half.
Murray dropped serve again in the opening game of the second set but broke straight back. He set up a match point with an excellent backhand cross-court winner as he retrieved a shot deep into the court, and clinched victory when Muller hit a forehand wide. He next plays 15th-seeded Albert Ramos-Vinolas of Spain.
Former champion Stan Wawrinka, who won here in 2014, broke Czech player Jiri Vesely's serve five times in a 6-2, 4-6, 6-2 win, while ninth-seeded Tomas Berdych, the runner-up in 2015, rallied to beat 39-year-old German Tommy Haas 3-6, 6-1, 6-4.
There were a couple of upsets as German Jan-Lennard Struff knocked out eighth-seeded Grigor Dimitrov 4-6, 6-3, 6-2 and Argentine Diego Schwartzman beat 12th-seeded Roberto Bautista Agut 6-3, 7-6 (3).
Elsewhere, there were wins for No. 5 Marin Cilic of Croatia; No. 6 Dominic Thiem of Austria; No. 11 Lucas Pouille of France; No. 13 Pablo Carreno Busta of Spain; Zverev and Ramos-Vinolas.