Liga Portugal

Season review

Liga Portugal 2025-26: the season reviewed

FC Porto won Liga Portugal 2025-26 with 88 points: 28 wins, four draws, two defeats. Behind them sat two teams with strange seasons. Sporting scored 89 goals — 23 more than the champions — and finished with the best goal difference in the league, +65, six points back. Benfica went all 34 matchdays without losing once and finished third, 11 draws costing them more than any defeat could have.

At the bottom, Tondela and AVS went down. This page puts together three things: the final table, what xG says about who deserved what they got, and what our model was saying while the season ran — including what it got wrong.

88
points for champions Porto
89
goals for Sporting, the best attack — in second
11
draws for Benfica, who never lost a match
13.5
points below expectation for relegated Tondela

Final table

All 306 matches, with expected points (xPts) computed from each match's xG. The “Luck” column is the gap between real and expected points.

Final Liga Portugal 2025-26 standings, with expected points from xG
#TeamWDLGDPtsxPtsLuck
1
POR
2842+488870.5+17.5
2
SCP
2572+658271.7+10.3
3
SLBunbeaten
23110+498069.8+10.2
4
BRA
16117+285958.3+0.7
5
FAM
15118+135654.5+1.5
6
GIL
131110+95052.3−2.3
7
MOR
12715-124335.3+7.7
8
VSC
12616-124244.2−2.2
9
ARO
12616-174239.4+2.6
10
EST
10915-33939.5−0.5
11
ALV
10915-173945.8−6.8
12
STC
9916-93645.7−9.7
13
RIO
81214-223636.9−0.9
14
NAC
9718-83440.5−6.5
15
EAM
61216-183038.5−8.5
16
CPA
61216-263032.0−2.0
17
TON
61018-282841.5−13.5
18
AVS
31219-402128.5−7.5

Who got lucky

For every match, both teams' xG is turned into win, draw and loss probabilities, and from there into expected points. Summed over the season, it shows who converted better than their chances suggested — and who was punished.

The luckiest

Porto took 88 points from an xG worth 70.5 17.5 above expectation, the largest gap in the league. The xG table had Sporting first.

The unluckiest

Tondela went down on 28 points. xG gave them 41.5 10th place. They scored 27 goals from chances worth 40.3: the worst finishing in the league, and the difference between staying up and going down.

The best finishing

Sporting scored 89 goals from 72.4 xG — +16.6 goals above expectation. It was not enough: the title turned on wins, and Porto took three more.

Below expectationAbove expectation
POR
+17.5
88 real pts
70.5 expected
SCP
+10.3
82 real pts
71.7 expected
SLB
+10.2
80 real pts
69.8 expected
MOR
+7.7
43 real pts
35.3 expected
ARO
+2.6
42 real pts
39.4 expected
FAM
+1.5
56 real pts
54.5 expected
BRA
+0.7
59 real pts
58.3 expected
EST
-0.5
39 real pts
39.5 expected
RIO
-0.9
36 real pts
36.9 expected
CPA
-2.0
30 real pts
32.0 expected
VSC
-2.2
42 real pts
44.2 expected
GIL
-2.3
50 real pts
52.3 expected
NAC
-6.5
34 real pts
40.5 expected
ALV
-6.8
39 real pts
45.8 expected
AVS
-7.5
21 real pts
28.5 expected
EAM
-8.5
30 real pts
38.5 expected
STC
-9.7
36 real pts
45.7 expected
TON
-13.5
28 real pts
41.5 expected

xG measures chance quality, not moral desert. Finishing well is a skill; the open question is how much of it repeats next year.

The title race, matchday by matchday

The championship probability the model assigned at each published forecast. Every point is a 50,000-season simulation run at that moment, with no knowledge of the future.

0%25%50%75%100%no forecastPOR 100%SCP 0%SLB 0%15101520253034matchday

Published forecasts stop at matchday 31 — the last three rounds were never simulated. Porto won the title.

The model's report card

The part that matters: what the model got right, and what it got wrong. Nineteen forecasts were published between matchday 4 and matchday 31.

19/19
forecasts with the eventual champion as favourite
matchday 16
from which the two relegated clubs were always the model's bottom two
1.7 pts
average error on predicted final points in the last published forecast
Mean absolute error of predicted final points, by published matchday
MatchdayPorto championMean error on final points
466%
3.4
664%
3.5
866%
3.4
1068%
3.5
1274%
3.1
1480%
3.6
1683%
3.2
1885%
3.4
2071%
3.8
2273%
3.7
2366%
3.4
2467%
3.3
2573%
3.2
2677%
2.7
2786%
2.5
2872%
2.2
2978%
2.4
3095%
1.9
31100%
1.7

Where we were wrong

The most persistent error was Arouca. At matchday 16 the model projected them to finish on 29.6 points and gave them a 33% chance of relegation; they finished on 42, in ninth. Twelve points of error on a single club — the largest of the season — and a relegation alarm that never had grounds.

The model was also steadily too harsh on AVS: even in the final forecast it had them on 15.6 points, and they made 21. Down they went — but the model had treated it as settled since matchday 8, a confidence one season is not enough to justify.

And there is a tension this page does not resolve: the model reads results, and the results said Porto were the best team. xG says the best team was Sporting. Both can be right — just not at once.

The small print

Final standings from the season's 306 matches. xPts are computed match by match with the aggregate Poisson method over each team's xG (34 matches per team, full coverage), and do not use the Bayesian model's parameters — it is an independent read. The probabilities come from the files we published between matchdays 4 and 31, exactly as they stood then, with no later recalculation. xG from SofaScore.