Center Back · Manchester City · season-by-season, by competition, and every match.
Below his 2020/21 peak but holding a solid level — the platform for a return is there.
The record covers 6 seasons (2020/21–2025/26) across 1 club — 181 appearances with 9 goal contributions from defence.
His best campaign on record is 2020/21 at Manchester City — Season rating 69, 1 goal and 0 assists in 32 games. Output has held steady across his last 3 full seasons (45 → 40). The gap to his peak is 29 Season points.
2025/26 was disrupted — 7 fixtures missed through injury or absence.
| Season | Club | Apps | G | A | Rating | Season |
|---|---|---|---|---|---|---|
| 2025/26 | Manchester City | 26 | 2 | 0 | 57 | 40 |
| 2024/25 | Manchester City | 27 | 0 | 0 | 70 | 36 |
| 2023/24 | Manchester City | 35 | 0 | 0 | 80 | 45 |
| 2022/23 | Manchester City | 32 | 0 | 0 | 82 | 33 |
| 2021/22 | Manchester City | 29 | 2 | 4 | 92 | 65 |
| 2020/21 | Manchester City | 32 | 1 | 0 | 93 | 69 |
| Competition | Apps | Min | G | A | Rating |
|---|---|---|---|---|---|
| Premier League | 26 | 2161 | 2 | 0 | 7.2 |
| UEFA Champions League | 7 | 506 | 0 | 0 | 7.0 |
| FIFA Club World Cup | 3 | 210 | 0 | 0 | 7.3 |
| Friendlies Clubs | 3 | 210 | 0 | 0 | 7.3 |
| Date | Competition | Opponent | Res | Status | Min | G | A | Rating |
|---|---|---|---|---|---|---|---|---|
| Jun 18 | FIFA Club World Cup | H Wydad AC | 2-0 | Unused sub | 0 | — | ||
| Jun 23 | FIFA Club World Cup | H Al Ain | 6-0 | Played | 16 | 6.6 | ||
| Jun 26 | FIFA Club World Cup | A Juventus | 5-2 | Played | 90 | 6.6 | ||
| Jul 1 | FIFA Club World Cup | H Al-Hilal Saudi FC | 3-4 | Played | 120 | 7.9 | ||
| Aug 9 | Friendlies Clubs | A Palermo | 3-0 | Not in squad | — | |||
| Aug 16 | Premier League | A Wolves | 4-0 | Played | 90 | 7.5 | ||
| Aug 23 | Premier League | H Tottenham | 0-2 | Played | 90 | 6.2 | ||
| Aug 31 | Premier League | A Brighton | 1-2 | Played | 14 | 6.2 | ||
| Sep 14 | Premier League | H Manchester United | 3-0 | Played | 90 | 7.0 | ||
| Sep 18 | UEFA Champions League | H Napoli | 2-0 | Played | 90 | 7.2 | ||
| Sep 21 | Premier League | A Arsenal | 1-1 | Played | 90 | 6.2 | ||
| Sep 24 | League Cup | A Huddersfield | 2-0 | Unused sub | 0 | — | ||
| Sep 27 | Premier League | H Burnley | 5-1 | Played | 90 | 6.9 | ||
| Oct 1 | UEFA Champions League | A Monaco | 2-2 | Played | 90 | 7.0 | ||
| Oct 5 | Premier League | A Brentford | 1-0 | Played | 90 | 7.9 | ||
| Oct 18 | Premier League | H Everton | 2-0 | Played | 90 | 7.3 | ||
| Oct 21 | UEFA Champions League | A Villarreal | 2-0 | Played | 90 | 7.6 | ||
| Oct 26 | Premier League | A Aston Villa | 0-1 | Played | 90 | 7.9 | ||
| Oct 29 | League Cup | A Swansea | 3-1 | Not in squad | — | |||
| Nov 2 | Premier League | H Bournemouth | 3-1 | Played | 90 | 6.9 | ||
| Nov 5 | UEFA Champions League | H Borussia Dortmund | 4-1 | Played | 11 | 6.9 | ||
| Nov 9 | Premier League | H Liverpool | 3-0 | Played | 90 | 7.3 | ||
| Nov 22 | Premier League | A Newcastle | 1-2 | Played | 90 | 1 | 8.6 | |
| Nov 25 | UEFA Champions League | H Bayer Leverkusen | 0-2 | Unused sub | 0 | — | ||
| Nov 29 | Premier League | H Leeds | 3-2 | Played | 90 | 6.6 | ||
| Dec 2 | Premier League | A Fulham | 5-4 | Played | 90 | 6.0 | ||
| Dec 6 | Premier League | H Sunderland | 3-0 | Played | 90 | 1 | 8.9 | |
| Dec 10 | UEFA Champions League | A Real Madrid | 2-1 | Played | 90 | 7.3 | ||
| Dec 14 | Premier League | A Crystal Palace | 3-0 | Played | 90 | 7.3 | ||
| Dec 17 | League Cup | H Brentford | 2-0 | Unused sub | 0 | — | ||
| Dec 20 | Premier League | H West Ham | 3-0 | Played | 90 | 7.2 | ||
| Dec 27 | Premier League | A Nottingham Forest | 2-1 | Played | 90 | 7.2 | ||
| Jan 1 | Premier League | A Sunderland | 0-0 | Played | 90 | 7.3 | ||
| Jan 4 | Premier League | H Chelsea | 1-1 | Played | 81 | 7.2 | ||
| Jan 7 | Premier League | H Brighton | 1-1 | Not in squad | — | |||
| Jan 10 | FA Cup | H Exeter City | 10-1 | Not in squad | — | |||
| Jan 13 | League Cup | A Newcastle | 2-0 | Not in squad | — | |||
| Jan 17 | Premier League | A Manchester United | 0-2 | Thigh Injury | — | |||
| Jan 20 | UEFA Champions League | A Bodo/Glimt | 1-3 | Not in squad | — | |||
| Jan 24 | Premier League | H Wolves | 2-0 | Thigh Injury | — | |||
| Jan 28 | UEFA Champions League | H Galatasaray | 2-0 | Not in squad | — | |||
| Feb 1 | Premier League | A Tottenham | 2-2 | Thigh Injury | — | |||
| Feb 4 | League Cup | H Newcastle | 3-1 | Unused sub | 0 | — | ||
| Feb 8 | Premier League | A Liverpool | 2-1 | Played | 29 | 6.7 | ||
| Feb 11 | Premier League | H Fulham | 3-0 | Played | 90 | 7.6 | ||
| Feb 14 | FA Cup | H Salford City | 2-0 | Unused sub | 0 | — | ||
| Feb 21 | Premier League | H Newcastle | 2-1 | Played | 45 | 6.5 | ||
| Feb 28 | Premier League | A Leeds | 1-0 | Played | 90 | 8.2 | ||
| Mar 4 | Premier League | H Nottingham Forest | 2-2 | Played | 90 | 7.2 | ||
| Mar 7 | FA Cup | A Newcastle | 3-1 | Unused sub | 0 | — | ||
| Mar 11 | UEFA Champions League | A Real Madrid | 0-3 | Played | 90 | 6.7 | ||
| Mar 14 | Premier League | A West Ham | 1-1 | Unused sub | 0 | — | ||
| Mar 17 | UEFA Champions League | H Real Madrid | 1-2 | Played | 45 | 6.3 | ||
| Mar 22 | League Cup | A Arsenal | 2-0 | Not in squad | — | |||
| Apr 4 | FA Cup | H Liverpool | 4-0 | Not in squad | — | |||
| Apr 12 | Premier League | A Chelsea | 3-0 | Muscle Injury | — | |||
| Apr 19 | Premier League | H Arsenal | 2-1 | Muscle Injury | — | |||
| Apr 22 | Premier League | A Burnley | 1-0 | Muscle Injury | — | |||
| Apr 25 | FA Cup | H Southampton | 2-1 | Not in squad | — | |||
| May 4 | Premier League | A Everton | 3-3 | Muscle Injury | — | |||
| May 9 | Premier League | H Brentford | 3-0 | Unused sub | 0 | — | ||
| May 13 | Premier League | H Crystal Palace | 3-0 | Unused sub | 0 | — | ||
| May 16 | FA Cup | A Chelsea | 1-0 | Unused sub | 0 | — | ||
| May 19 | Premier League | A Bournemouth | 1-1 | Unused sub | 0 | — | ||
| May 24 | Premier League | H Aston Villa | 1-2 | Played | 90 | 6.7 |