The defeat stalls Djokovic's bid to wrap up the year-end world No.1 ranking for a sixth time.
Italian Sonego, ranked No.42 and intially a loser in qualifying last weekend, is the first lucky loser ever to beat Djokovic.
His 6-2, 6-1 quarter-final demolition was 33-year-old Djokovic's heaviest defeat in a career littered with little other than tournament victories and grand slam titles.
The only other time he had won just three games was at the 2005 Australian Open at the hands of Marat Safin in a best-of-five set encounter.
Saturday's (AEDT) defeat means Djokovic will have to wait a little longer before he completes the formality of equalling Pete Sampras's all-time record of ending the season top of the rankings for a sixth time.
"For sure it's the best victory of my life. Novak is the best in the world. Today I played so, so good," Sonego said.
"It's unbelievable. It's amazing. I played the best match in my life. I'm so happy for this."
Sonego fired 26 winners past the Serb who lost for only the third time in 2020.
Djokovic, a 17-time Major champion, managed just seven winners against 25 unforced errors.
No.2 seed and defending champion Dominic Thiem also lost on Saturday (AEDT), going down 7-6 (7/5), 6-2 to Russian world No.8 Andrey Rublev.
Rublev hit 30 winners past the US Open champion and goes on to face South Africa's Kevin Anderson for a place in the final.
"I came here with the mood that I have nothing to lose," Rublev who is chasing a fifth title of the year, said.
"I had already a really great season. I came here with zero expectations, just wanting to do my best. To try to fight every match. At the end, I am here in the semi-finals."
Anderson made the semi-finals by accounting for No.4 seed Daniil Medvedev, from Russia, 6-4, 7-6 (7-5).
It was Anderson's first top 10 win in two years.