It’s all over and Fiorentina celebrate a much-needed and probably unexpected win.
An early goal gave the away side the perfect start before Juventus’ task was made all the more difficult when Cuadrado was dismissed for a dangerous challenge in the 18th minute.
The game remained in the balance with 15 minutes to go before Sandro converted into his own net, and the win was sealed in the 81st minute when Caceres made it 3-0 after finishing off a quick counter-attack.
The result ends the unbeaten league run of Juventus leaving them fourth and seven points behind Milan in top spot.
For the visitors, they move into 15th and five points clear of the drop zone as it stands.
Juventus welcome Udinese next as they look to bounce back before they take on Milan.
Fiorentina’s next fixture is against fellow strugglers Bologna so they’ll be hoping to make it back-to-back wins to really kickstart their revival.
Player ratings
Juventus: Szczęsny (5), Bonucci (5), Sandro (5), De Ligt (5), Cuadrado (3), Ramsey (5), McKennie (6), Bentancur (5), Chiesa (5), Morata (5), Ronaldo (6.5)
Bench: Danilo (5), Bernardeschi (5), Kulusevski (5), Frabotta (5).
Fiorentina: Dragowski (7), Caceres (7), Biraghi (8), Pezzella (8), Igor (8), Milenkovic (8), Ribery (9), Valero (7), Amrabat (7), Castrovilli (8), Vlahovic (7).
Bench: Pulgar (7), Kouame (6), Venuti (6), Bonaventura (5).