Sport Recife have the biggest shortfall in the Campeonato Brasileiro: 17 points from chances worth 38.0 xPts, a gap of 21.0. At the other end, Palmeiras have taken 76 points from an xPts figure of 63.9, 12.1 more than the underlying numbers justify.
Expected goals measure the quality of the chances a team creates and concedes, with every shot scored between 0 and 1 by how often shots like it are converted. Expected points come from running each finished match through a Poisson model using both sides' xG, giving a win, draw and loss probability, then awarding three points and one point against those probabilities. Underlying data is supplied by Sportmonks.
| # | Team | Played | Goals | xG | Goals minus xG | Goals against | xGA | Goals against minus xGA | Goal difference | xGD | Goal difference minus xGD | Points | xPts | Points minus xPts |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Flamengo | 19 | 46 | 36.9 | +9.1 | 8 | 12.6 | -4.6 | +38 | 24.3 | +13.7 | 47 | 41.2 | +5.8 |
| 2 | Internacional | 19 | 27 | 36.5 | -9.5 | 20 | 16.7 | +3.3 | +7 | 19.8 | -12.8 | 30 | 37.7 | -7.7 |
| 3 | Palmeiras | 19 | 35 | 32.3 | +2.7 | 11 | 14.6 | -3.6 | +24 | 17.8 | +6.2 | 41 | 37.2 | +3.8 |
| 4 | Bahia | 19 | 33 | 33.9 | -0.9 | 14 | 16.9 | -2.9 | +19 | 17.0 | +2.0 | 45 | 36.1 | +8.9 |
| 5 | Fluminense | 19 | 31 | 28.3 | +2.7 | 11 | 14.1 | -3.1 | +20 | 14.2 | +5.8 | 46 | 35.4 | +10.6 |
| 6 | Cruzeiro | 19 | 35 | 29.3 | +5.7 | 14 | 15.7 | -1.7 | +21 | 13.6 | +7.4 | 43 | 34.7 | +8.3 |
| 7 | Botafogo | 19 | 39 | 32.0 | +7.0 | 24 | 18.6 | +5.4 | +15 | 13.5 | +1.5 | 38 | 34.7 | +3.3 |
| 8 | Corinthians | 19 | 27 | 31.8 | -4.8 | 18 | 18.6 | -0.6 | +9 | 13.1 | -4.1 | 30 | 34.1 | -4.1 |
| 9 | Mirassol | 19 | 42 | 33.3 | +8.7 | 17 | 21.3 | -4.3 | +25 | 12.0 | +13.0 | 43 | 33.4 | +9.6 |
| 10 | Atlético Mineiro | 19 | 30 | 28.5 | +1.5 | 18 | 18.2 | -0.2 | +12 | 10.3 | +1.7 | 35 | 32.8 | +2.2 |
| 11 | Santos | 19 | 24 | 29.7 | -5.7 | 19 | 21.0 | -2.0 | +5 | 8.6 | -3.6 | 30 | 32.2 | -2.2 |
| 12 | São Paulo | 19 | 27 | 28.1 | -1.1 | 17 | 18.9 | -1.9 | +10 | 9.1 | +0.9 | 34 | 31.8 | +2.2 |
| 13 | Bragantino | 19 | 27 | 28.6 | -1.6 | 24 | 20.3 | +3.7 | +3 | 8.2 | -5.2 | 31 | 30.4 | +0.6 |
| 14 | Grêmio | 19 | 24 | 27.9 | -3.9 | 17 | 22.3 | -5.3 | +7 | 5.6 | +1.4 | 32 | 29.1 | +2.9 |
| 15 | Ceará | 19 | 20 | 20.7 | -0.7 | 18 | 15.7 | +2.3 | +2 | 5.0 | -3.0 | 26 | 29.0 | -3.0 |
| 16 | Vitória | 19 | 21 | 25.9 | -4.9 | 15 | 20.9 | -5.9 | +6 | 5.0 | +1.0 | 33 | 28.9 | +4.1 |
| 17 | Vasco da Gama | 19 | 31 | 27.7 | +3.3 | 26 | 25.1 | +0.9 | +5 | 2.5 | +2.5 | 28 | 27.8 | +0.2 |
| 18 | Fortaleza | 19 | 23 | 25.9 | -2.9 | 23 | 22.6 | +0.4 | +0 | 3.3 | -3.3 | 27 | 27.4 | -0.4 |
| 19 | Juventude | 19 | 21 | 20.2 | +0.8 | 26 | 26.9 | -0.9 | -5 | -6.7 | +1.7 | 23 | 21.6 | +1.4 |
| 20 | Sport Recife | 19 | 17 | 19.1 | -2.1 | 39 | 28.6 | +10.4 | -22 | -9.5 | -12.5 | 10 | 20.2 | -10.2 |
| # | Team | Played | Goals | xG | Goals minus xG | Goals against | xGA | Goals against minus xGA | Goal difference | xGD | Goal difference minus xGD | Points | xPts | Points minus xPts |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Flamengo | 19 | 32 | 27.3 | +4.7 | 19 | 21.2 | -2.2 | +13 | 6.1 | +6.9 | 32 | 30.0 | +2.0 |
| 2 | Palmeiras | 19 | 31 | 24.7 | +6.3 | 22 | 24.0 | -2.0 | +9 | 0.7 | +8.3 | 35 | 26.6 | +8.4 |
| 3 | Mirassol | 19 | 21 | 26.9 | -5.9 | 22 | 29.4 | -7.4 | -1 | -2.4 | +1.4 | 24 | 25.0 | -1.0 |
| 4 | Botafogo | 19 | 19 | 21.2 | -2.2 | 14 | 23.3 | -9.3 | +5 | -2.1 | +7.1 | 25 | 23.6 | +1.4 |
| 5 | Cruzeiro | 19 | 20 | 18.8 | +1.2 | 17 | 23.5 | -6.5 | +3 | -4.7 | +7.7 | 27 | 23.3 | +3.7 |
| 6 | Fluminense | 19 | 19 | 15.2 | +3.8 | 28 | 20.4 | +7.6 | -9 | -5.2 | -3.8 | 18 | 21.6 | -3.6 |
| 7 | Santos | 19 | 21 | 20.6 | +0.4 | 31 | 28.3 | +2.7 | -10 | -7.8 | -2.2 | 17 | 21.4 | -4.4 |
| 8 | Ceará | 19 | 14 | 17.5 | -3.5 | 22 | 25.3 | -3.3 | -8 | -7.8 | -0.2 | 17 | 20.7 | -3.7 |
| 9 | Atlético Mineiro | 19 | 13 | 18.1 | -5.1 | 26 | 25.2 | +0.8 | -13 | -7.1 | -5.9 | 13 | 20.6 | -7.6 |
| 10 | Internacional | 19 | 17 | 18.2 | -1.2 | 37 | 28.2 | +8.8 | -20 | -10.0 | -10.0 | 14 | 20.5 | -6.5 |
| 11 | Bahia | 19 | 17 | 21.1 | -4.1 | 32 | 32.5 | -0.5 | -15 | -11.4 | -3.6 | 15 | 19.3 | -4.3 |
| 12 | São Paulo | 19 | 16 | 17.4 | -1.4 | 30 | 30.0 | +0.0 | -14 | -12.6 | -1.4 | 17 | 19.2 | -2.2 |
| 13 | Vasco da Gama | 19 | 24 | 19.2 | +4.8 | 34 | 31.1 | +2.9 | -10 | -12.0 | +2.0 | 17 | 19.0 | -2.0 |
| 14 | Bragantino | 19 | 18 | 18.0 | +0.0 | 33 | 31.7 | +1.3 | -15 | -13.7 | -1.3 | 17 | 18.3 | -1.3 |
| 15 | Fortaleza | 19 | 20 | 21.1 | -1.1 | 35 | 34.6 | +0.4 | -15 | -13.5 | -1.5 | 16 | 17.8 | -1.8 |
| 16 | Sport Recife | 19 | 11 | 20.0 | -9.0 | 36 | 35.6 | +0.4 | -25 | -15.7 | -9.3 | 7 | 17.8 | -10.8 |
| 17 | Grêmio | 19 | 23 | 19.4 | +3.6 | 33 | 36.6 | -3.6 | -10 | -17.2 | +7.2 | 17 | 17.5 | -0.5 |
| 18 | Corinthians | 19 | 15 | 15.3 | -0.3 | 29 | 28.5 | +0.5 | -14 | -13.3 | -0.7 | 17 | 16.8 | +0.2 |
| 19 | Vitória | 19 | 14 | 15.2 | -1.2 | 37 | 31.9 | +5.1 | -23 | -16.7 | -6.3 | 12 | 16.3 | -4.3 |
| 20 | Juventude | 19 | 14 | 14.5 | -0.5 | 43 | 35.0 | +8.0 | -29 | -20.5 | -8.5 | 12 | 14.4 | -2.4 |
| # | Team | Played | Goals | xG | Goals minus xG | Goals against | xGA | Goals against minus xGA | Goal difference | xGD | Goal difference minus xGD | Points | xPts | Points minus xPts |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Bahia | 5 | 6 | 11.8 | -5.8 | 6 | 5.0 | +1.0 | +0 | 6.9 | -6.9 | 7 | 10.5 | -3.5 |
| 2 | Flamengo | 5 | 9 | 8.9 | +0.1 | 6 | 5.1 | +0.9 | +3 | 3.8 | -0.8 | 8 | 9.6 | -1.6 |
| 3 | Fluminense | 5 | 12 | 7.5 | +4.5 | 2 | 3.9 | -1.9 | +10 | 3.6 | +6.4 | 13 | 8.8 | +4.2 |
| 4 | Santos | 5 | 11 | 7.9 | +3.1 | 2 | 5.4 | -3.4 | +9 | 2.5 | +6.5 | 11 | 8.8 | +2.2 |
| 5 | Internacional | 5 | 7 | 7.2 | -0.2 | 11 | 4.4 | +6.6 | -4 | 2.8 | -6.8 | 7 | 8.5 | -1.5 |
| 6 | Grêmio | 5 | 12 | 8.1 | +3.9 | 7 | 6.2 | +0.8 | +5 | 1.9 | +3.1 | 9 | 8.2 | +0.8 |
| 7 | Botafogo | 5 | 14 | 9.4 | +4.6 | 10 | 7.4 | +2.6 | +4 | 2.0 | +2.0 | 11 | 8.1 | +2.9 |
| 8 | Corinthians | 5 | 7 | 7.3 | -0.3 | 9 | 5.6 | +3.4 | -2 | 1.7 | -3.7 | 5 | 8.1 | -3.1 |
| 9 | Bragantino | 5 | 7 | 7.4 | -0.4 | 7 | 5.9 | +1.1 | +0 | 1.4 | -1.4 | 6 | 7.9 | -1.9 |
| 10 | Cruzeiro | 5 | 9 | 5.9 | +3.1 | 9 | 6.7 | +2.3 | +0 | -0.9 | +0.9 | 6 | 6.6 | -0.6 |
| 11 | Palmeiras | 5 | 8 | 7.2 | +0.8 | 4 | 8.4 | -4.4 | +4 | -1.2 | +5.2 | 8 | 6.5 | +1.5 |
| 12 | Vitória | 5 | 6 | 6.3 | -0.3 | 5 | 7.1 | -2.1 | +1 | -0.8 | +1.8 | 10 | 6.2 | +3.8 |
| 13 | Mirassol | 5 | 9 | 7.4 | +1.6 | 6 | 8.2 | -2.2 | +3 | -0.9 | +3.9 | 8 | 6.2 | +1.8 |
| 14 | Ceará | 5 | 3 | 4.8 | -1.8 | 10 | 5.5 | +4.5 | -7 | -0.7 | -6.3 | 1 | 6.1 | -5.1 |
| 15 | Atlético Mineiro | 5 | 6 | 6.0 | +0.0 | 7 | 7.8 | -0.8 | -1 | -1.8 | +0.8 | 4 | 6.1 | -2.1 |
| 16 | Juventude | 5 | 6 | 6.5 | -0.5 | 10 | 9.5 | +0.5 | -4 | -3.1 | -0.9 | 3 | 5.0 | -2.0 |
| 17 | Fortaleza | 5 | 9 | 6.1 | +2.9 | 7 | 9.9 | -2.9 | +2 | -3.7 | +5.7 | 12 | 4.9 | +7.1 |
| 18 | São Paulo | 5 | 6 | 4.2 | +1.8 | 11 | 8.6 | +2.4 | -5 | -4.4 | -0.6 | 6 | 4.7 | +1.3 |
| 19 | Vasco da Gama | 5 | 5 | 3.6 | +1.4 | 11 | 7.4 | +3.6 | -6 | -3.8 | -2.2 | 3 | 4.3 | -1.3 |
| 20 | Sport Recife | 5 | 3 | 4.0 | -1.0 | 15 | 9.4 | +5.6 | -12 | -5.4 | -6.6 | 0 | 3.9 | -3.9 |
Flamengo overperformed their xG by more than any other side in Campeonato Brasileiro in 2025, with 78 goals from chances worth 64.2 xG, a gap of 13.8. Palmeiras were next on 8.9.
Sport Recife underperformed their xG by more than any other side in Campeonato Brasileiro in 2025, with 28 goals from chances worth 39.1 xG, a shortfall of 11.1. Internacional were next on 10.7.
Palmeiras were the luckiest side in Campeonato Brasileiro in 2025, with 76 points from performances worth 63.9 xPts, 12.1 more than their chances deserved. Cruzeiro were next on 11.9.
Sport Recife were the unluckiest side in Campeonato Brasileiro in 2025, with 17 points from performances worth 38.0 xPts, 21.0 short of what they deserved. Internacional were next on 14.2.
Flamengo were also top of Campeonato Brasileiro in 2025 on expected points, with 71.2 xPts from 64.2 xG created and 33.8 conceded across 38 matches. Palmeiras were next on 63.9.
Flamengo created the most xG in Campeonato Brasileiro in 2025, 64.2 from 38 matches, 1.7 a game against a competition average of 1.3. Mirassol were next on 60.2.
Juventude created the least xG in Campeonato Brasileiro in 2025, 34.8 from 38 matches, 0.9 a game against a competition average of 1.3. Ceará were next on 38.3.
Sport Recife conceded the most xG in Campeonato Brasileiro in 2025, 64.2 from 38 matches, 1.7 a game against a competition average of 1.3. Juventude were next on 62.0.
Flamengo conceded the least xG in Campeonato Brasileiro in 2025, 33.8 from 38 matches, 0.9 a game against a competition average of 1.3. Fluminense were next on 34.5.
Campeonato Brasileiro teams averaged 1.27 xG a game in 2025, from the 380 matches played, and scored 1.26 goals a game from it. That is up from 1.23 xG a game in 2024.
Campeonato Brasileiro teams created more xG at home in 2025, 1.52 a game against 1.03 away, a home advantage of +0.49, against +0.34 in 2024.
The same season by player, with the goals each one scored against the chances they had.
| # | Team | Played | Goals | xG | Goals minus xG | Goals against | xGA | Goals against minus xGA | Goal difference | xGD | Goal difference minus xGD | Points | xPts | Points minus xPts |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Flamengo | 38 | 78 | 64.2 | +13.8 | 27 | 33.8 | -6.8 | +51 | 30.4 | +20.6 | 79 | 71.2 | +7.8 |
| 2 | Palmeiras | 38 | 66 | 57.1 | +8.9 | 33 | 38.6 | -5.6 | +33 | 18.5 | +14.5 | 76 | 63.9 | +12.1 |
| 3 | Mirassol | 38 | 63 | 60.2 | +2.8 | 39 | 50.6 | -11.6 | +24 | 9.6 | +14.4 | 67 | 58.4 | +8.6 |
| 4 | Botafogo | 38 | 58 | 53.2 | +4.8 | 38 | 41.9 | -3.9 | +20 | 11.3 | +8.7 | 63 | 58.3 | +4.7 |
| 5 | Internacional | 38 | 44 | 54.7 | -10.7 | 57 | 44.9 | +12.1 | -13 | 9.9 | -22.9 | 44 | 58.2 | -14.2 |
| 6 | Cruzeiro | 38 | 55 | 48.2 | +6.8 | 31 | 39.2 | -8.2 | +24 | 9.0 | +15.0 | 70 | 58.1 | +11.9 |
| 7 | Fluminense | 38 | 50 | 43.6 | +6.4 | 39 | 34.5 | +4.5 | +11 | 9.0 | +2.0 | 64 | 57.0 | +7.0 |
| 8 | Bahia | 38 | 50 | 54.9 | -4.9 | 46 | 49.4 | -3.4 | +4 | 5.6 | -1.6 | 60 | 55.4 | +4.6 |
| 9 | Santos | 38 | 45 | 50.2 | -5.2 | 50 | 49.4 | +0.6 | -5 | 0.9 | -5.9 | 47 | 53.7 | -6.7 |
| 10 | Atlético Mineiro | 38 | 43 | 46.6 | -3.6 | 44 | 43.4 | +0.6 | -1 | 3.1 | -4.1 | 48 | 53.3 | -5.3 |
| 11 | Corinthians | 38 | 42 | 47.0 | -5.0 | 47 | 47.2 | -0.2 | -5 | -0.1 | -4.9 | 47 | 51.0 | -4.0 |
| 12 | São Paulo | 38 | 43 | 45.5 | -2.5 | 47 | 48.9 | -1.9 | -4 | -3.4 | -0.6 | 51 | 51.0 | +0.0 |
| 13 | Ceará | 38 | 34 | 38.3 | -4.3 | 40 | 41.0 | -1.0 | -6 | -2.8 | -3.2 | 43 | 49.7 | -6.7 |
| 14 | Bragantino | 38 | 45 | 46.6 | -1.6 | 57 | 52.1 | +4.9 | -12 | -5.5 | -6.5 | 48 | 48.7 | -0.7 |
| 15 | Vasco da Gama | 38 | 55 | 46.8 | +8.2 | 60 | 56.3 | +3.7 | -5 | -9.4 | +4.4 | 45 | 46.8 | -1.8 |
| 16 | Grêmio | 38 | 47 | 47.3 | -0.3 | 50 | 58.9 | -8.9 | -3 | -11.6 | +8.6 | 49 | 46.7 | +2.3 |
| 17 | Fortaleza | 38 | 43 | 47.0 | -4.0 | 58 | 57.2 | +0.8 | -15 | -10.3 | -4.7 | 43 | 45.3 | -2.3 |
| 18 | Vitória | 38 | 35 | 41.1 | -6.1 | 52 | 52.8 | -0.8 | -17 | -11.7 | -5.3 | 45 | 45.2 | -0.2 |
| 19 | Sport Recife | 38 | 28 | 39.1 | -11.1 | 75 | 64.2 | +10.8 | -47 | -25.2 | -21.8 | 17 | 38.0 | -21.0 |
| 20 | Juventude | 38 | 35 | 34.8 | +0.2 | 69 | 62.0 | +7.0 | -34 | -27.2 | -6.8 | 35 | 36.0 | -1.0 |