Fiorentina pulled off a clinical smash-and-grab at the Allianz Stadium on Sunday, beating Juventus 2-0 despite seeing just 42% of the ball and producing an xG of only 0.47. Cher Ndour broke the deadlock in the 34th minute and Rolando Mandragora sealed it in the 83rd, sending Juventus home empty-handed in a result that defied almost every underlying number. David De Gea was the story behind the story, making nine saves to preserve Fiorentina’s clean sheet as Luciano Spalletti’s side generated 1.94 xG and fired 26 shots without reward.

Key Moments
- 22′, Marin Pongracic picked up a yellow card for a trip, an early sign of Fiorentina absorbing pressure and getting physical to disrupt Juventus’s rhythm.
- 32′, Fabiano Parisi was forced off through injury, prompting Fiorentina’s first substitution before the half-hour was even up, disrupting their defensive shape.
- 34′, Cher Ndour put Fiorentina in front with a composed finish, giving the visitors a lead that looked improbable given the run of play.
- 45′, Bremer collected a yellow card just before the break, adding disciplinary pressure to Juventus heading into the second half.
- 46′, Teun Koopmeiners was substituted at half-time, a clear signal from Spalletti that the midfield needed reshaping to break down Fiorentina’s low block.
- 70′, Dusan Vlahovic thought he had equalized but the goal was ruled out by VAR for offside, extinguishing Juventus’s best moment of the second half.
- 72′, Luca Ranieri, introduced just eight minutes earlier, was sent off for abusing officials, leaving Fiorentina to defend a one-goal lead with ten men.
- 83′, Rolando Mandragora pounced to make it 2-0, effectively ending the contest and punishing Juventus for their inability to convert dominance into goals.
Tactical Breakdown
On paper, this match belonged to Juventus. Spalletti’s side held 58% possession, completed 392 of 480 passes at an 82% accuracy rate, and piled up 26 total shots, 9 of which were on target. The xG gap was equally stark: Juventus generated 1.94 to Fiorentina’s 0.47. Yet football is played on grass, not spreadsheets, and the Bianconeri’s inability to convert a mountain of chances handed Fiorentina the three points on a silver tray. De Gea, making nine saves, was the difference between a comfortable Juventus win and a humbling home defeat.
Fiorentina’s game plan was transparent but effective. They defended deep, absorbed pressure in a 4-3-3 shape, and looked for quick transitions. The triple substitution at the 64th minute (Brescianini, Ranieri, and Fagioli all came on together) refreshed legs and helped manage the growing momentum of Juventus’s second-half siege. Even when Ranieri was sent off in the 72nd minute for abusing officials, reducing Fiorentina to ten men, the visitors held firm and struck again on the counter through Mandragora in the 83rd. The timing was brutal for Juventus, who had been pushing for an equalizer.
Juventus’s night unraveled through a combination of wastefulness in front of goal, a VAR disallowance of Vlahovic’s would-be equalizer for offside at the 70th minute, and a failure to punish Fiorentina when they went down to ten men. Koopmeiners being pulled at half-time underscored how little Juventus were getting through centrally, and despite the introductions of Francisco Conceicao and Andrea Cambiaso in the 69th minute to add direct running, the hosts never found the cutting edge they needed. Sixteen fouls and seven blocked shots tell the story of a team that ran out of ideas and composure at the same time.
Player Ratings
Verdict
This result is a sobering one for Juventus, who produced more than enough volume to win comfortably but walked away with nothing from their own ground. Fiorentina, meanwhile, bank a prestigious road victory that boosts their position heading into the final round of Serie A. With Juventus generating nearly 2.0 xG and still losing 2-0, there are questions about efficiency and mentality in Turin that will outlast this particular Sunday afternoon.