German second seed Zverev was 3-1 up in the decider before two rain stoppages halted his momentum.
Top seed Nadal raced away with the last five games to secure a 32nd Masters title and ensure a return to the world number one spot.
The 31-year-old also showed why he will once again be the runaway favourite when Roland Garros begins in a week where he’ll be bidding for an 11th French Open title.
Zverev, 21, came to the court riding a 13-match win streak which included last weekend’s trophy in Madrid.
However, by the end of Sunday’s rain-hit final, his record against the Spaniard stood at five defeats in five meetings.
Nadal was 3-1 down at the first rain break but cut the gap on the resumption.
After a further half an hour off court during the second interruption, Nadal came back out firing, winning four straight games to wrap up the win on his second match point.
Couldn't be happier traveling back home now with this trophy in my hands... Took this picture at the locker room for you guys, Thanks for the support!!! pic.twitter.com/iNbbdOKGXe— Rafa Nadal (@RafaelNadal) May 20, 2018
“The rain break was so important, I didn’t think it would help me but it did. I was able to come back out with clear ideas, I’m very happy,” said Nadal.
“To win Rome eight times is amazing, it’s hard to describe. To have the chance to win here again is so great.
“As for Roland Garros, I’m going to enjoy this victory and think about Paris in a few days.
“For Alexander it’s amazing to have won that many matches in a row,” Nadal said after winning in just over two hours.
“Today this trophy is with me for a short time, but I’m sure you will get it again.”
He added: “This was a very difficult match played at one of the best events of the world.
“To win again after my first (Rome title) in 2005 is amazing, the 2005 final was one of the best memories of my career.”
Nadal remains the best clay-courter of the Open Era with an astonishing 408-36 record
He will next seek an 11th French Open crown to match the 11 he owns from Monte Carlo and Barcelona.
“You are an amazing champion and you proved that today,” Zverev told the Spaniard at the trophy presentation.
“You are the greatest clay player of all time, we all saw that. I’m disappointed that my streak is over, but I did lose to Rafa, so maybe it’s OK.
“I was so close but I lost it at the end.”
With the sun shining, Nadal made light work of what looked like a disastrous start to the match as he dropped serve in the opening game.
But the king of clay quickly mounted a fightback, breaking world number three Zverev to love and going on to deny the German a winning service game in the entire set.
Nadal closed out the opener in 32 minutes on an overhead smash to leave his challenger scratching for answers after losing six straight games.
Zverev finally held serve to start the second set and answered Nadal by breaking the top seed twice to reach 5-0 as the first dark clouds of the week gathered over the Foro Italico and the conditions slowed.
Nadal temporarily stopped the rot as he won his fist game of the set but Zverev levelled the match at a set each a game later.
That set the stage for the rollercoaster third set decider.
Rafael Nadal stayed on track to reclaim the world number one ranking after recovering from a set down to defeat Fabio Fognini in the quarter-finals of the Internazionali BNL d’Italia.
With the home crowd on his side, the flamboyant Fognini threatened to cause an upset when he won the final five games of the first set after trailing 4-1.
But Nadal broke serve at the start of the second set and thereafter was always in control, with Fognini needing treatment for a left knee problem before going down 4-6, 6-1, 6-2.
Nadal said on Sky Sports: “He played well, it’s true I had a couple of mistakes but he played quick, going for shots without missing much. He put me under pressure. I should not lose two serves in a row but it happened.
“The only thing I can do is accept and keep working for the next set.
Indomitable @RafaelNadal 💪
— Tennis TV (@TennisTV) May 18, 2018
“I increased a little bit the level with my forehand, it was something I needed to do. It was a great day to play tennis and a good match.”
Fognini boasts three wins over Nadal in his career, including becoming the first player to beat the great Spaniard from two sets down at a grand slam at the US Open in 2015.
But Nadal had won all five meetings since and, although he was rattled by Fognini’s comeback in the first set, ultimately the Italian could not sustain the brilliance needed to overcome the greatest clay-courter in history.
Having lost top spot in the rankings to Roger Federer following his loss to Dominic Thiem in Madrid last week, Nadal can reclaim it by winning the title in Rome. He will next face either Novak Djokovic or Kei Nishikori.
Shapovalov went into the match with a winning record against Nadal after beating him on home soil in Canada last summer but the Spaniard on clay is, of course, a very different proposition and he ultimately eased to a 6-4 6-1 victory.
There were plenty of the eye-catching shots that make 19-year-old Shapovalov such an exciting prospect as he saved eight break points in his first two service games, but Nadal broke for 4-3 and thereafter was in control.
Shapovalov not surprisingly began to look tired in the second set after his run to the Madrid semi-finals last week and battling victories over Tomas Berdych and Robin Haase in the first two rounds here and could not live with the relentlessness of Nadal .
In the last eight Nadal will face another flashy player in Italian Fabio Fognini, who delighted the home crowd with a 6-4 6-4 win against Peter Gojowczyk.
Fifth seed Juan Martin del Potro retired with a groin injury during the second set of his clash with David Goffin.
The Argentinian did not appear comfortable at any point in the match and went off court for a medical time-out early in the second set.
Initially that seemed to adversely affect Goffin but, after missing a set point, Del Potro decided he could no longer continue and shook hands trailing 2-6 5-4.
The 29-year-old will hope to recover in time for the French Open, which begins on May 27.
Tenth seed Pablo Carreno Busta recovered from a second-set wobble to beat Aljaz Bedene 6-4 6-7 (3/7) 6-2.