Analysis

Two ways to go unbeaten: how Arsenal and Leverkusen protected their leads

Arsenal's Invincibles and Xabi Alonso's Leverkusen both went a league season unbeaten and both finished on 90 points. Arsenal managed games once they were ahead; Leverkusen kept attacking, won every match they led and took nine extra points after the 75th minute.

Only a handful of teams in Europe’s big leagues have gone a whole league season without losing. Two of them have every match in StatsBomb’s open data: Arsène Wenger’s Arsenal in the 2003/04 Premier League, and Xabi Alonso’s Bayer Leverkusen in the 2023/24 Bundesliga.

They ended up in exactly the same place. Arsenal won 26 and drew 12 of their 38 matches. Leverkusen won 28 and drew 6 of their 34. Both finished on 90 points. But the event data shows they got there in very different ways, and the difference shows most clearly in what each side did once it was in front.

90Points for each side, with no defeats

28 of 28Matches Leverkusen led and went on to win. Arsenal: 26 of 31

+9 v −4Points changed by goals after the 75th minute, Leverkusen v Arsenal

49% v 34%Ball recoveries in the opponent's half, Leverkusen v Arsenal

Same points, different margins

On the season as a whole, Leverkusen were the more dominant side. They scored 89 and conceded 24; Arsenal scored 73 and conceded 26. Leverkusen took 18.3 shots a match and allowed 8.6. Arsenal took 14.3 and allowed 10.1.

Expected goals (xG) tell the same story. xG gives every shot a value between 0 and 1, the chance that a shot like it is scored (explained here), and this piece uses StatsBomb’s own values. Leverkusen created 2.14 xG a match and gave up 0.82. Arsenal created 1.60 and gave up 0.81. So the two defences allowed almost exactly the same quality of chances per match. The gap was at the other end of the pitch.

Both sides also scored more than their chances suggested: Arsenal by 12.1 goals and Leverkusen by 16.3. Over a season that usually points to very good finishers, and both sides had them.

Half the season in front

The first thing to know about an unbeaten season is how rarely the team was behind. Arsenal trailed for 7% of their league minutes and Leverkusen for 9%. Both were ahead for about half the time: 49% for Arsenal and 52% for Leverkusen.

Two stacked horizontal bars. Arsenal 2003/04 spent 49% of their league minutes leading, 44% level and 7% behind. Leverkusen 2023/24 spent 52% leading, 40% level and 9% behind.
Minutes counted on the match clock, stoppage time included. Data: StatsBomb Open Data.

So the two seasons looked alike on the scoreboard. The question is what each team did with all that time in front.

What a lead meant

Here the two teams split. When the score was level, they were equally dominant: Arsenal had 68% of the xG in those minutes and Leverkusen 70%. Once they were ahead, they went in opposite directions.

Grouped bar chart of each side's share of the match xG by the score at the time. When leading, Arsenal had 62% and Leverkusen 74%. When level, Arsenal 68% and Leverkusen 70%. When behind, Arsenal 79% and Leverkusen 73%.
xG share is a side's xG divided by the xG of both sides, in the minutes spent leading, level or behind. Data: StatsBomb Open Data.

Arsenal’s share fell to 62% when they led. They created less, 1.33 xG per 90 minutes against 1.62 when level, and allowed a little more, 0.81 against 0.75. The shot counts make the point more plainly. When level, Arsenal outshot their opponents 15.1 to 9.1 per 90 minutes. When ahead, it was 11.6 to 10.2, close to an even contest.

Leverkusen did the reverse. Their share rose to 74% when ahead, because they created more (2.01 xG per 90, against 1.85 when level) and allowed less (0.71, against 0.79). They kept outshooting opponents by roughly two to one whatever the score.

Leverkusen led in 28 league matches and won all 28.

That is why the two teams’ results with a lead differ. Leverkusen led in 28 league matches and won all 28. Arsenal led in 31 and won 26. Their other five became draws: against Leicester, Everton, Bolton, Manchester United and Tottenham. At White Hart Lane in April, Arsenal were 2–0 up and drew 2–2; it was the only one of the 17 matches in which they led by two or more that they did not win.

None of this means Arsenal were careless. Sitting on a lead was a reasonable plan for a side with Thierry Henry and Robert Pirès to break into the space opponents left as they chased the game, and Arsenal still scored 28 goals while ahead. But it left the door open, and they conceded 16 goals while leading. Leverkusen conceded 14 in about the same number of minutes. Both sides were pegged back: Arsenal had a one-goal lead wiped out nine times in eight matches, Leverkusen seven times in seven. Leverkusen went back in front and won all seven.

The late goals

The clearest difference comes at the end of matches. Leverkusen scored 22 of their 89 league goals after the 75th minute, a quarter of the total, and eight of them in stoppage time. Arsenal scored 10 of 73 in the same spell, two in stoppage time.

Grouped bar chart of league goals scored by 15-minute spell. Arsenal: 14, 10, 13, 17, 9 and 10. Leverkusen: 9, 11, 17, 14, 16 and 22, the most in the final spell from the 76th minute on.
First-half stoppage time is counted in the 31–45 spell and second-half stoppage time in the 76–90 spell. Data: StatsBomb Open Data.

Those late goals carried a lot of weight. If every match had finished at 75 minutes, Leverkusen would have had nine fewer points. Robert Andrich equalised against Stuttgart in the 96th minute and Josip Stanišić against Dortmund in the 97th. Victor Boniface’s 79th-minute goal earned the home draw with Dortmund. Exequiel Palacios won it at Augsburg in the 94th minute, Piero Hincapié at Leipzig in the 91st, and against Hoffenheim Andrich equalised in the 88th before Patrik Schick won it in the 91st. Leverkusen conceded four goals after the 75th minute all season, and none of them cost a point.

Arsenal’s late goals cut the other way. Fredrik Ljungberg’s 82nd-minute winner against Tottenham in November and Henry’s 80th-minute penalty against Newcastle won them four points. But Bolton (83rd minute), Manchester United (86th), Leicester (93rd) and Tottenham (Robbie Keane’s penalty in the 94th) all scored late equalisers. That cost eight points, so Arsenal lost four points to goals after the 75th minute.

Two unbeaten seasons
Arsenal 2003/04Leverkusen 2023/24
Matches (W–D–L)38 (26–12–0)34 (28–6–0)
Goals73 – 2689 – 24
xG per match1.60 – 0.812.14 – 0.82
Shots per match14.3 – 10.118.3 – 8.6
Share of minutes leading / level / behind49% / 44% / 7%52% / 40% / 9%
xG share when leading62%74%
Matches led, and won31, 2628, 28
Matches behind: won, drawn9: 6, 37: 2, 5
Goals after the 75th minute10 – 722 – 4
Points changed by those goals−4+9
The team's own figure first where two are given. Data: StatsBomb Open Data.

There is one thing Arsenal did better. They went behind in nine matches and won six of them, taking 21 points. Leverkusen went behind in seven and won only two, taking 11. Arsenal usually fixed things quickly: in eight of those nine matches they were level again by the 50th minute. Leverkusen’s comebacks were later and narrower. In five of their seven, the equaliser came after the 75th minute.

Where they won the ball

The two teams also won the ball back in different places. Of Leverkusen’s ball recoveries, 49% came in the opponent’s half and 31% in the attacking third. For Arsenal it was 34% and 18%, and 44% of their recoveries came in their own third.

Two pitches split into six vertical strips, each labelled with the share of the side's ball recoveries won there. Arsenal's fall steadily from 24% next to their own goal to 7% next to the opponent's. Leverkusen's are almost flat: 15%, 18%, 18%, 18%, 18% and 13%.
Ball recoveries are StatsBomb events where a player gains possession of a loose ball; failed recoveries are left out. Both teams attack left to right. Data: StatsBomb Open Data.

This is not simply about pressing harder. On PPDA, the number of passes a side lets the opponent make before it tackles, intercepts or fouls (explained here), Arsenal were actually the more aggressive side, at 13.6 to Leverkusen’s 17.4. Lower means more pressing. The difference is about where the ball was. Leverkusen had 62% of the passes in their matches and Arsenal 56%. A team that spends long spells camped in the opponent’s half wins loose balls there, and Leverkusen kept themselves in position to do it. That also helps explain the late goals. A side that wins the ball 30 yards from goal in the 90th minute gets more last chances.

What it means

Arsenal’s season was the work of a side that was very good at managing games. They got in front, eased off, and trusted their quality on the break and in the box. That nearly always worked: they won 26 of the 31 matches they led. The five that got away were all draws, so they were never punished with a defeat.

Leverkusen did not change their game when they went ahead. They kept their share of the chances at 70% or more in every game state, and when matches were level or lost late, they kept attacking until the last kick. Their record says it worked: every match they led was won, and goals after the 75th minute were worth nine points.

There are limits to the comparison. The data covers only these two teams’ matches, so there is no league-wide baseline. That matters most for the late goals, because many sides score more as opponents tire. And 34 and 38 matches are small samples for counting late goals: a few minutes either way in four or five matches would change the totals. Two decades separate the seasons too. Five substitutes and longer stoppage time both make late goals more likely in 2023/24 than in 2003/04.

Method and data

StatsBomb Open Data event data for all 38 of Arsenal's 2003/04 Premier League matches (competition 2, season 44) and all 34 of Bayer Leverkusen's 2023/24 Bundesliga matches (competition 9, season 281). The 2003/04 matches were collected years later from video, using the same event definitions as the modern ones. xG is StatsBomb's own value for each shot, penalties included (non-penalty xG: Arsenal 55.4 for, 27.8 against; Leverkusen 66.4 for, 27.8 against). Own goals count as goals. Game state (leading, level, behind) is the score at the moment of each shot, and minutes in each state are measured on the match clock with stoppage time included. A match is counted as led if the team was ahead at any point. Minutes in the text follow the usual convention: StatsBomb's minute 95 is the 96th minute. "After the 75th minute" means second-half goals from 75:00 on, stoppage time included. Points changed by those goals compare each match's result after 75 minutes with the final result. Ball recoveries leave out those StatsBomb marks as failed; the opponent's half is x above 60 on StatsBomb's 120 × 80 pitch and the attacking third is x of 80 or more. PPDA counts opponent passes in their own 60% of the pitch, divided by the pressing side's tackles, interceptions and fouls in its attacking 60%. Pass share counts all passes. The 360 freeze frames available for Leverkusen are not used, because there is no 360 data for Arsenal to compare with. All figures were computed in code (charts/unbeaten.py) from the data. Data: StatsBomb.