Zverev was booed by the Monte Carlo crowd as he walked out onto Court Rainier III, but he managed to put it to the back of his mind as he went on to seal his place in the next round in three hours and seven minutes.
The world No. 3 will play Stefanos Tsitsipas, who beat Diego Schwartzman in a three-set epic, in the last four.
“It means a lot [to win against Sinner], especially with how this year has been going so far for me,” Zverev said on-court afterwards.
“I’ve lost long matches like that so I’m happy that I won this match – a very high level match – so I’m happy with this win.
“I’ve lost so many matches this year, it’s in the back of my mind, I think this one will definitely help me.”
Sinner got off to a lacklustre start and Zverev capitalised by breaking the Italian with four successive points to take a 3-1 lead.
But at 4-1 down, Sinner mounted his comeback and got the set back on serve after Zverev struck a backhand into the net before holding to make it 4-4.
Sinner earned himself four break point opportunities and was gifted the eventual break when Zverev double faulted; much to the enjoyment of the pro-Sinner crowd.
Sinner took the first set in 53 minutes, winning three points in a row on serve before sealing it with an ace.
Momentum was with Sinner heading into the second set and he sealed an important break to go 2-1 up by hitting a backhand cross-court winner which got the better of Zverev at the net. But the German broke back instantly as Sinner double faulted.
Sinner hit an unreturnable backhand to set up his second break point in the fifth game, but squandered it and Zverev held his serve. There was a medical timeout as the German appeared to be struggling with an injury to his right quad.
But Zverev bounced back stronger, cutting out his unforced errors, and let out a roar when he eventually secured a break to go 5-3 up when Sinner hit a loose backhand into the net. Zverev had no issues serving out the set to force a decider.
The German number one took the first break in the third game, firing a flurry of ferocious forehand winners which put him into a 2-1 lead. But after a double fault from Zverev in the fourth game sparked the crowd into life, Sinner converted to level the match at 2-2.
The pair would not be tied for too long as in the seventh game Sinner double faulted to hand Zverev a break lead.
But staring at defeat at 5-4 down, Sinner broke back after errors crept back into Zverev’s game and the German fired a forehand well out which saw the crowd erupt.
The match was decided in the tie-break. A glaring unforced error from Sinner gave Zverev a 6-5 lead and then wrapped it up after the 20-year-old struck the net.