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.
Fiorentia 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.
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.