The German fourth seed fought back to win 4-6, 6-1, 5-7, 7-6(2), 6-2 after four hours and 11 minutes and set up a quarter-final against Alex de Minaur.
It was the second-latest finish in the tournament's history - after Novak Djokovic's win over Lorenzo Musetti which finished at 03:07 local time (02:97 BST) on Sunday morning - ending at 01:40 (00:40 BST).
"What a match," said Zverev. "I'm lucky to be through."
He will be targeting a fourth straight Roland Garros semi-final after making the last eight for the sixth time in seven years.
Zverev is playing under the shadow of an ongoing trial in Berlin over allegations of assaulting an ex-girlfriend.
He also beat Tallon Griekspoor in a deciding set, in which he trailed by a double-break at 4-1, in the third round.
"I've played a total of eight-and-a-half hours over the last three days so I need to recover," said Zverev.
"I need to do everything possible to be ready for the quarter-final match."