Fiorentina, who had failed to win any of their previous six league matches since the return of coach Cesare Prandelli, were also helped by some calamitous defending by the hosts, with Leonardo Bonucci in particular suffering an off day.
Dusan Vlahovic stunned the Turin side by giving the visitors the lead in the third minute before Alex Sandro put through his own goal and Martin Caceres added a third following more bad defending in the last quarter of an hour.
The defeat, Juve’s worst at the Allianz Stadium since it opened nine years ago, left them fourth with 24 points after 13 games, seven behind leaders AC Milan, and raises questions about their ability to extend their run of nine successive titles.
Fiorentina are in 15th place on 14 points.
Fiore got off to a flying start when Franck Ribery released Vlahovic with a through ball and the Serb held off Matthijs De Ligt before lifting the ball over keeper Wojciech Szczesny.
Vlahovic wasted another chance after Bonucci lost the ball and Juve’s problems mounted when Cuadrado caught Gaetano Castrovilli’s shin with a dangerous studs-up tackle.
The referee showed a yellow card but changed it to red after viewing the incident on the pitchside monitor.
Szczesny tipped away a Castrovilli effort after another Bonucci mistake but Juve also threatened with Ronaldo firing into the side-netting and also testing keeper Bartlomiej Dragowski with a long-range effort.
Ronaldo had a header disallowed for offside after the break before Juve fell apart in the closing stages.
Bonucci made a complete hash of an attempt to clear Cristiano Biraghi’s cross and the ball hit Alex Sandro and flew into the goal in the 76th minute.
Five minutes later, Bonucci had his pocket picked by Ribery and the French veteran found Biraghi whose cross was tapped in by Caceres to complete a thoroughly miserable night for Juve.