This was a strange season to watch, even by Juventus standards.
Two managers — a statement that almost feels like the norm rather than the exception at this point. A squad that looked broken in October and functional, genuinely functional, by February. A defensive structure that opponents slowly figured out how to pick apart. A striker situation that never really got resolved. And then, right when it mattered most, a decision that cost them two spots in the table in the span of three weeks.
The 2025-26
Serie A campaign was — to put it bluntly — an unmitigated disaster. Juventus finished in Europa League position after spending most of the second half of the season looking like a top-four side. They led the league in xGA suppression and still gave up goals at a rate that cost them points. They found a system that worked, generated real attacking threat, and then abandoned it at the worst possible moment.
The through-line, if there is one, is the 2025-26 season revealed the ceiling of this squad as much as it revealed the limitations of the men managing it. Igor Tudor couldn’t unlock what was there. Luciano Spalletti found a way to get considerably more out of it — and then, chasing his preferred vision of how the team should play, tried to evolve toward something the pieces weren’t quite ready for. The squad itself had structural problems that neither man could fully paper over.
To understand how we got there, it helps to see the whole season at once.
The numbers are pretty stark when you lay them out side by side. Spalletti’s 29 matches produced 1.96 xG1 per game and an xGA of just 0.85 — an xGD of +1.11 per match. Tudor’s 17 matches (across the end of last season and the beginning of this one) tell a different story: 1.21 xG per game, 0.94 xGA, an xGD of just +0.27. The gap isn’t subtle. It’s the difference between a team that looks like it belongs in the top four and a team that’s struggling to justify a spot in Europe.
The rolling chart fills in the texture. The attack flatlines under Tudor in the early months — hovering around 1.2 to 1.4 xG per match — while the xGA creeps upward toward the end of his tenure. The transition to Spalletti after he took over in late October is visible almost immediately in the offensive line, which starts climbing and, by February and March, reaches sustained stretches above 2.0 xG per match — numbers that would make this a secure top-four side in most Serie A seasons. The xGA line stays impressively low throughout Spalletti’s tenure right up until the final weeks, when both lines start moving in the wrong direction simultaneously.
Tudor was dismissed in late October on the back of five consecutive winless matches, including two defeats. On top of the poor results, the matches showed a decline in the underlying numbers. With the results lacking and there being no sign of improvement on the horizon, the club ran out of patience waiting for the curve to turn.
The 1.21 xG per match under Tudor is the number that stands out most. This is a squad that had Kenan Yıldız, Francisco Conceição, and Andrea Cambiaso all returning, Dusan Vlahović has proven lethal when he’s fit, and they were able to add Jonathan David — who’d scored 15 or more goals in four straight seasons in Ligue 1 — to the mix. These are all players who, under the right conditions, are capable of generating considerably more threat than that. Despite the available talent, Tudor seemed to lack the tactical tools to get the best out of what he had. And the longer it went on, the more apparent that became.
Spalletti came in after a single match under an interim manager and the numbers shifted almost immediately. But the thing that’s easy to miss, and that the manager table makes clear, is that Spalletti didn’t fundamentally change the shape of the team. Both managers worked primarily from a 3-4-2-1 due to the stability and defensive solidarity it provided. The difference wasn’t the formation. It was what happened inside it.
What Spalletti changed were the roles players were assigned. He took the same basic structure and put players in roles that better suited what they were actually good at — and perhaps more importantly, he was more deliberate about hiding what they weren’t.
The wide forwards were asked to operate in more dangerous areas closer to goal rather than contributing heavily to ball progression from deeper zones. Conceição saw his xG per match jump from 0.09 under Tudor to 0.29 under Spalletti — more than a threefold increase — and he took 63 shots across 25 league matches compared to just 10 in Tudor’s 6. His progressive passes per match dropped in the process, from 13.8 to 8.6, which is the tell: he was doing less of the connective work from deeper areas and arriving in attacking positions more frequently instead. His touches became concentrated near the right side of the box, in dangerous areas rather than in the safer zones further from goal where he was more often found under Tudor. The finishing wasn’t always there, and that’s a real limitation, but the underlying action profile is that of a player deployed in a way that genuinely suited him.
Yıldız is a slightly different story. While he was always a key figure for Tudor, Spalletti opted to give him more responsibility. Under Tudor, his role in the final third was relatively undefined — present and involved, but without a clear focal point. Under Spalletti, he was asked to do more and given the freedom to do it: his xG per match rose from 0.13 to 0.25, his take-on attempts climbed from 3.6 to 5.1 per match, and his key passes increased from 0.38 to 0.59. Crucially, he wasn’t asked to sacrifice the progressive work to get there — his progressive passes per match stayed roughly stable at 12.2 versus 13.6. He was given a more demanding role in the final third and, generally, delivered on it.
Both players point to the same underlying thing. When Spalletti put his best attackers in better positions, better things happened. That sounds obvious in retrospect, but it’s worth saying plainly because it’s the most important thing that changed between the two managers.
Slightly further back, Weston McKennie saw a genuine revival with Spalletti at the helm. Under Tudor, McKennie was used as a utility super sub — capable of playing virtually any position, deployed situationally rather than in a fixed role. That explains his scattered touch map: it’s not a player without a position so much as a player asked to fill whatever position the moment required. His per-match numbers under Tudor (31.6 actions, 10.6 progressive passes) reflect that limited and fragmented usage.
Once Spalletti took over, he became a genuine starter with a defined role. In the 3-4-2-1 that drove Juventus’ best stretch of the season, that role was primarily right wingback — covering the flank defensively, contributing in transition. He also found time in the midfield duo, with Pierre Kalulu taking over on the right wing. His actions per match nearly doubled to 65.3 and his progressive passes per match jumped to 19.4, both consistent with a player now covering a defined area of the pitch with real regularity rather than floating through the middle third on limited minutes.
And on the other wing, Spalletti was very careful with how he approached his makeshift wingback. With a lack of alternative options, Tudor and Spalletti were both effectively forced to play their standout winger — Cambiaso — as their left wingback. Unfortunately, despite the multiple ways Cambiaso contributes well to the squad, he lacks the pace, positioning, and vision to defend adequately in such a role. Spalletti’s solution was a simple but (largely) effective one: keep Cambiaso deeper in possession.
The change had a few benefits. In possession, it provided another supporting piece for a midfield that largely lacks technically skilled players. Cambiaso is quite effective in possession, capable of advancing the ball up the wing or through the middle by passing and carrying the ball. Giving him that ball progression responsibility is also — at least partially — what allowed Spalletti to have Yıldız more engaged in the final third. While the Turkish winger was still responsible for helping move the ball into the final third, the presence of Cambiaso in deeper areas allowed him to receive the ball higher up the pitch and also move the ball into the box.
Despite the change in role, Cambiaso’s overall ball movement numbers across both managers were remarkably stable. He averaged 26.8 progressive passes per match under Tudor and exactly 26.8 under Spalletti. He wasn’t even necessarily on the ball more — averaging 73.8 actions per match under Tudor to 74.7. What changed substantially were where his ball progression happened, along with his take-on attempts, which dropped from 1.83 per match under Tudor to 0.69 under Spalletti, and his key passes, which fell from 1.33 to 0.34.
His move back had another benefit, though: it helped mitigate his most glaring weakness. As previously noted, his lack of defensive experience paired with his average to below average pace made his defensive recovery an issue. By holding Cambiaso further back, Spalletti limited the opportunities opponents had to pick on his left wingback. Of course, he didn’t turn the tap off completely. Instead, he turned what had been a firehose into a regular problem. The left channel — Cambiaso’s side — received more traffic than the league average. The right channel didn’t show the same uplift. That’s not a coincidence. Teams identified the route deliberately and went after it consistently. Managing Cambiaso’s attacking role helped. It didn’t eliminate a structural problem that opponents had clearly scouted.
Opponents entered Juventus’ final third via Cambiaso’s flank and generated 3.62 total xG from those entries across the season — slightly higher per entry than the right flank, and with shots that clustered in dangerous central areas once they arrived rather than being pushed to safer wide angles. The more damning piece of evidence is the progressive pass destination map, which compares where teams played progressive passes against Juventus relative to the Serie A average.
Which brings us to the other glaring problem on defense: the keepers. The aggregate xGA figures — 0.85 per match under Spalletti — suggest a defense operating at an elite level. And in terms of limiting the quality and quantity of chances, that’s largely accurate. The more specific problem wasn’t his aggregate performance. It was the pattern within it. Michele Di Gregorio was prone to mistimed lapses early in matches, conceding on shots that arrived before he was fully settled, and generally steadied thereafter. That’s a particular and costly kind of unreliability. Going behind early puts a team in a fundamentally different position than conceding the same goal twenty minutes later, and across 17 matches this season, Juventus found themselves in that position before they’d had a chance to establish themselves.
Opponents scored on the first shot on target Juventus faced in 17 of 38 matches this season — a figure that sits at the 99th percentile across 100,000 simulations. The broader defensive picture is complicated further by what was happening in goal. Juventus faced 181 shots on target across the season with Di Gregorio in net across 30 matches, conceding 25 — a save percentage of 86.2% against a cumulative PSxG of 26.6. He saved approximately 1.56 goals above what shot placement would predict, which is a positive contribution, though close enough to zero that reading too much skill into it over a single season would be a stretch. What the PSxG figures also show is that the shots he faced weren’t particularly well-placed on average — his PSxG of 26.6 against an xG of 28.2 means opponents’ shot placement was generally slightly worse than what their positions suggested it should be, which is a credit to the defensive shape rather than anything the goalkeeper did.
Mattia Perin’s numbers across his eight appearances add a small footnote. He conceded 9 goals against a PSxG of 5.94 — 3.06 above expectation — with a save percentage of 78.6%. The sample is too small to lean on heavily, but the signal wasn’t encouraging. The goalkeeper position is reportedly the top priority this summer, and it’s not hard to see why. Di Gregorio was fine. Better than fine, in the aggregate. But the pattern of early lapses — conceding on first shots at a rate that truly perplexed the mind — meant that fine wasn’t enough. The defense in front of him was doing its job. The channel on the left was being exploited. The keepers were steadying after early stumbles. Everywhere you looked, this team was almost good enough, in ways that compounded rather than cancelled out.
That phrase keeps coming back because it applies to almost everything about this season. The defensive structure was good enough — until opponents figured out the left channel and started threading passes into it deliberately. The attack was good enough — until it dried up in the most important matches of the season. Tudor was good enough to hold things together — until it became clear that he wasn’t. Spalletti was good enough to build something real — until he dismantled it at the worst possible moment. Cambiaso was good enough at left wingback — until teams decided to make him the focal point of their game plan.
What’s left is a squad that showed, in its best stretch, that the underlying quality is genuinely there. The numbers from November through April are the best Juventus have produced in this dataset under any manager. That matters. So does the fact that it ended in sixth place.
Whether next season looks like that November-to-April stretch or like the final three weeks is the only question that matters now. The answers are sitting in the transfer window, in Spalletti’s tactical decisions, and in whether the structural problems that were papered over this season get addressed properly or quietly carried forward. This squad has a ceiling. This season proved it. Whether that ceiling moves is what next season is for.
1. A note on methodology: all xG figures in this piece use Opta’s native xG. This is distinct from SxG (Semperty’s xG), the recalibrated XGBoost model used in other pieces on this site.













