Seko Fofana scored the winner as Juventus fell to a shock 2-1 defeat at struggling Udinese on Thursday to miss the chance to seal the Serie A title for the ninth time in a row.
Dutch defender Matthijs de Ligt had put the defending champions ahead three minutes before the break in Udine.
But a diving Ilija Nestorovski header seven minutes after the break got Udinese level with Seko Fofana scoring the winner in injury time.
Juventus remain six points ahead of second-placed Atalanta with three games left to play, and have another chance to seal the title for the 36th time on the pitch at home against 14th-placed Sampdoria on Sunday.
Maurizio Sarri’s side need just three more points and the coronation could come on Saturday, depending on the results of their rivals Atalanta, Inter and Lazio.
But Juventus’s performance against the minnows from the north-east was worrying ahead of their crunch Champions League last 16 game against Lyon on August 7.
The game started with a clumsy header from Danilo, which almost resulted in an own goal before bouncing off Wojciech Szczesny’s post.
Udinese keeper Juan Musso denied Paulo Dybala — who was wearing the captain’s armband — after 13 minutes with Ronaldo’s long-range effort wide before De Ligt broke through, smashing in after 42 minutes.
Back after the break, Nestorovski took advantage of an Alex Sandro error to equalise, getting his head to a cross from on-loan Watford midfielder Ken Sema to beat Szczesny.
And two minutes into extra time, Ivorian international Fofana capped a solid match by getting the better of De Ligt to all but ensure Udinese of staying in Serie A with his third goal this season.
It was a precious three points for Udinese who move up to 15th position, seven points clear of the relegation zone.
“Juventus wanted to win the championship, but we had a great game,” said Fofana.
“We said beforehand that (relegation rivals) Lecce were going strong and we had to push forward.”
Lazio came from a goal down to defeat Cagliari 2-1 to move to within a point of third-placed Inter.
Sergey Milinkovic-Savic got Lazio back into the game just after the break with Ciro Immobile connecting with a Luis Alberto cross for the winner after an hour in Sardinia.
It was Immobile’s 31st goal this season and moves the Italian back ahead of Ronaldo in the battle for the top Serie A scorer this season.
Simone Inzaghi’s side ended their five-match winless run with a victory which leaves them with a slim chance of winning the title, as they sit eight points behind Juventus.
The Roman club are, however, assured of playing in the Champions League next season.