betaider.com
Sign in

Real Madrid v Villarreal — Prediction, Odds & Stats

Saturday 4 October 2025 · ESP-La Liga · 2526

La Liga xG Prediction generated

3–1
4.32 – 0.96 xG
Shots
26 – 9
On target
7 – 2
Shots in box
16 – 3
xG per shot
0.17 – 0.11
Set-piece xG
1.36 – 0.00
Goals − xG
-1.33 – +0.04

AI prediction

ai-blend-oos No snapshot has been taken for this fixture yet; this is the stored price.
Real Madrid win
54.2%
Draw
22.5%
Villarreal win
23.3%

Probabilities, not certainties. How they are made: the methodology.

Was this pick made in advance?
A model whose name ends -oos is out of sample: it was fitted only on matches played before this one, so its pick is a genuine forecast rather than hindsight. Anything without that suffix was fitted on all available data.

What the chances say

Real Madrid are conceding fewer than expected — 2.3 goals saved beyond what the chances suggest.

DWLWWWWWWL last 10 scored 20 from 21.0 xG conceded 8 from 10.3 xG

Villarreal are conceding more than the chances against them merit — 2.1 goals above expected, which tends to correct.

WWDLLWDDLL last 10 scored 21 from 19.7 xG conceded 17 from 14.9 xG

Finishing swings far more than chance creation, so a gap this size usually narrows. Over ten matches it is suggestive, not settled — a genuinely elite finisher beats expected goals for years.

What the model said

ModelHome / Draw / Away Expected goalsLikeliest score O2.5BTTSOutcome
ai-blend-oos 1.87–1.15 0% 0% 0% Home ✓
dc-xg-oos 2.32–1.39 2-1 9% 71% 68% Home ✓

A model whose name ends -oos was produced by the walk-forward backtest: it was fitted only on matches played before this one, so the pick is genuinely out of sample.

Reading the xG timeline
Each step up is a shot; the height of the step is how good the chance was. Dots mark goals. A side whose line climbs steadily created chances all match. A side that scored while its line stayed flat took a rare chance — that is finishing luck, and it rarely repeats.

Expected goals by minute

0.01.22.43.64.80'15'30'45'60'75'90'Vinícius Júnior 46' — goalVinícius Júnior 68' — goalGeorges Mikautadze 72' — goalKylian Mbappe-Lottin 80' — goal
Real Madrid 4.33 xGVillarreal 0.96 xG
Reading the shot map
Each circle is a shot, placed where it was taken. Bigger means a better chance; filled circles are goals. Clusters near the goal mean a side worked good openings; lots of small circles far out means shooting from poor positions and hoping. Hover any circle for the player, minute and chance quality.

Shot map

Arda Güler 6' — Missed Shot (0.05 xG, Open Play)Federico Valverde 8' — Blocked Shot (0.01 xG, Open Play)Kylian Mbappe-Lottin 19' — Saved Shot (0.03 xG, Open Play)Tani Oluwaseyi 19' — Missed Shot (0.03 xG, Open Play)Aurelien Tchouameni 21' — Missed Shot (0.41 xG, Open Play)Franco Mastantuono 21' — Blocked Shot (0.40 xG, Open Play)Franco Mastantuono 22' — Missed Shot (0.03 xG, From Corner)Dean Huijsen 24' — Blocked Shot (0.02 xG, Open Play)Aurelien Tchouameni 26' — Missed Shot (0.51 xG, Set Piece)Thomas Partey 29' — Blocked Shot (0.01 xG, Open Play)Arda Güler 36' — Blocked Shot (0.06 xG, Direct Freekick)Arda Güler 36' — Missed Shot (0.02 xG, Set Piece)Tani Oluwaseyi 40' — Saved Shot (0.60 xG, Open Play)Alberto Moleiro 41' — Missed Shot (0.10 xG, Open Play)Vinícius Júnior 42' — Blocked Shot (0.02 xG, Open Play)Franco Mastantuono 44' — Missed Shot (0.04 xG, Open Play)Vinícius Júnior 46' — Goal (0.03 xG, Open Play)Aurelien Tchouameni 55' — Blocked Shot (0.03 xG, Open Play)Dean Huijsen 55' — Missed Shot (0.12 xG, Open Play)Nicolas Pepe 59' — Blocked Shot (0.09 xG, Open Play)Pape Alassane Gueye 59' — Blocked Shot (0.02 xG, Open Play)Kylian Mbappe-Lottin 63' — Missed Shot (0.02 xG, Open Play)Vinícius Júnior 68' — Goal (0.74 xG, )Jude Bellingham 71' — Saved Shot (0.14 xG, Open Play)Jude Bellingham 71' — Saved Shot (0.55 xG, Open Play)Georges Mikautadze 72' — Goal (0.06 xG, Open Play)Thomas Partey 73' — Blocked Shot (0.02 xG, Open Play)Vinícius Júnior 79' — Blocked Shot (0.09 xG, Open Play)Vinícius Júnior 79' — Saved Shot (0.30 xG, Open Play)Kylian Mbappe-Lottin 80' — Goal (0.49 xG, Open Play)Georges Mikautadze 87' — Missed Shot (0.03 xG, Open Play)Brahim Diaz 89' — Blocked Shot (0.12 xG, Open Play)Eduardo Camavinga 91' — Missed Shot (0.03 xG, Open Play)Federico Valverde 93' — Missed Shot (0.02 xG, Open Play)Jude Bellingham 93' — Blocked Shot (0.04 xG, Open Play)
Real Madrid attacking right Villarreal attacking left Marker size is xG; filled markers are goals.

Every shot

MinTeamPlayerxG SituationBody partResultAssisted by
6' Real Madrid Arda Güler 0.05 Open Play Left Foot Missed Shot Kylian Mbappe-Lottin
8' Real Madrid Federico Valverde 0.01 Open Play Right Foot Blocked Shot Vinícius Júnior
19' Real Madrid Kylian Mbappe-Lottin 0.03 Open Play Right Foot Saved Shot Dani Ceballos
19' Villarreal Tani Oluwaseyi 0.03 Open Play Left Foot Missed Shot Pape Alassane Gueye
21' Real Madrid Aurelien Tchouameni 0.41 Open Play Missed Shot Vinícius Júnior
21' Real Madrid Franco Mastantuono 0.40 Open Play Left Foot Blocked Shot Kylian Mbappe-Lottin
22' Real Madrid Franco Mastantuono 0.03 From Corner Left Foot Missed Shot Federico Valverde
24' Real Madrid Dean Huijsen 0.02 Open Play Right Foot Blocked Shot Vinícius Júnior
26' Real Madrid Aurelien Tchouameni 0.51 Set Piece Missed Shot Franco Mastantuono
29' Villarreal Thomas Partey 0.01 Open Play Right Foot Blocked Shot
36' Real Madrid Arda Güler 0.06 Direct Freekick Left Foot Blocked Shot
36' Real Madrid Arda Güler 0.02 Set Piece Right Foot Missed Shot
40' Villarreal Tani Oluwaseyi 0.60 Open Play Right Foot Saved Shot Alberto Moleiro
41' Villarreal Alberto Moleiro 0.10 Open Play Right Foot Missed Shot Tani Oluwaseyi
42' Real Madrid Vinícius Júnior 0.02 Open Play Right Foot Blocked Shot Arda Güler
44' Real Madrid Franco Mastantuono 0.04 Open Play Left Foot Missed Shot Álvaro Fernández
46' Real Madrid Vinícius Júnior 0.03 Open Play Right Foot Goal Kylian Mbappe-Lottin
55' Real Madrid Aurelien Tchouameni 0.03 Open Play Right Foot Blocked Shot
55' Real Madrid Dean Huijsen 0.12 Open Play Left Foot Missed Shot Vinícius Júnior
59' Villarreal Nicolas Pepe 0.09 Open Play Left Foot Blocked Shot Santiago Comesaña
59' Villarreal Pape Alassane Gueye 0.02 Open Play Left Foot Blocked Shot Georges Mikautadze
63' Real Madrid Kylian Mbappe-Lottin 0.02 Open Play Right Foot Missed Shot Dean Huijsen
68' Real Madrid Vinícius Júnior 0.74 Right Foot Goal
71' Real Madrid Jude Bellingham 0.14 Open Play Right Foot Saved Shot Vinícius Júnior
71' Real Madrid Jude Bellingham 0.55 Open Play Left Foot Saved Shot Federico Valverde
72' Villarreal Georges Mikautadze 0.06 Open Play Right Foot Goal Pape Alassane Gueye
73' Villarreal Thomas Partey 0.02 Open Play Right Foot Blocked Shot Nicolas Pepe
79' Real Madrid Vinícius Júnior 0.09 Open Play Right Foot Blocked Shot
79' Real Madrid Vinícius Júnior 0.30 Open Play Left Foot Saved Shot
80' Real Madrid Kylian Mbappe-Lottin 0.49 Open Play Right Foot Goal Brahim Diaz
87' Villarreal Georges Mikautadze 0.03 Open Play Right Foot Missed Shot Thomas Partey
89' Real Madrid Brahim Diaz 0.12 Open Play Right Foot Blocked Shot Jude Bellingham
91' Real Madrid Eduardo Camavinga 0.03 Open Play Left Foot Missed Shot Rodrygo
93' Real Madrid Federico Valverde 0.02 Open Play Right Foot Missed Shot
93' Real Madrid Jude Bellingham 0.04 Open Play Right Foot Blocked Shot Vinícius Júnior

Players

Real Madrid

PlayerMinGA ShKPxGxA xGChain
Vinícius Júnior AML 90 2 0 5 6 1.18 0.75 1.19
Aurelien Tchouameni DMC 90 0 0 3 0 0.95 0.00 1.09
Dean Huijsen DC 90 0 0 2 1 0.14 0.02 0.21
Federico Valverde DR 90 0 0 2 2 0.03 0.57 0.60
Thibaut Courtois GK 90 0 0 0 0 0.00 0.00 0.15
Álvaro Fernández DL 90 0 0 0 1 0.00 0.04 0.65
Eder Militão DC 90 0 0 0 0 0.00 0.00 0.07
Kylian Mbappe-Lottin FW 84 1 1 3 3 0.55 0.48 1.18
Franco Mastantuono AMR 76 0 0 3 1 0.47 0.51 1.04
Arda Güler AMC 65 0 0 3 1 0.13 0.02 0.06
Dani Ceballos DMC 65 0 0 0 1 0.00 0.03 0.90
Jude Bellingham Sub 25 0 0 3 1 0.73 0.12 0.88
Eduardo Camavinga Sub 25 0 0 1 0 0.03 0.00 0.58
Brahim Diaz Sub 14 0 1 1 1 0.12 0.49 0.61
Rodrygo Sub 6 0 0 0 1 0.00 0.03 0.03

Villarreal

PlayerMinGA ShKPxGxA xGChain
Thomas Partey MC 90 0 0 2 1 0.04 0.03 0.28
Rafa Marín DC 90 0 0 0 0 0.00 0.00 0.12
Arnau Tenas GK 90 0 0 0 0 0.00 0.00 0.06
Sergi Cardona DL 90 0 0 0 0 0.00 0.00 0.18
Renato Veiga DC 90 0 0 0 0 0.00 0.00 0.06
Santiago Comesaña MC 87 0 0 0 1 0.00 0.09 0.81
Tani Oluwaseyi FW 83 0 0 2 1 0.62 0.10 0.72
Santiago Mouriño DR 78 0 0 0 0 0.00 0.00 0.60
Pape Alassane Gueye ML 74 0 1 1 2 0.02 0.08 0.21
Alberto Moleiro FW 47 0 0 1 1 0.10 0.60 0.70
Tajon Buchanan MR 47 0 0 0 0 0.00 0.00 0.00
Nicolas Pepe Sub 43 0 0 1 2 0.09 0.02 0.20
Georges Mikautadze Sub 43 1 0 2 1 0.09 0.02 0.11
Alfonso Sub 16 0 0 0 0 0.00 0.00 0.03
Adrià Alti Sub 7 0 0 0 0 0.00 0.00 0.03
Daniel Parejo Sub 3 0 0 0 0 0.00 0.00 0.00
betaider.com

Sport

Football sections

Preferences

Appearance
Aider Reading the Football model · online
Open the Radar
Bet slip
Open full page
to move to open esc to close See all results

On this page

Match

What this page is for

One fixture in full. The model's probability for every market it prices, the prices stored against them, the teams expected to feature, and for a match already played, the shot map and the xG timeline.

How to read the shot map

Every shot is placed where it was taken and sized by its chance of being scored. A cluster of small marks from distance and a clean sheet is a side that was busy without ever threatening; two big marks and a defeat is a side that had the better of it and lost anyway. Both happen constantly, and both are invisible in the score.

How to read the xG timeline

The steps are chances as they arrived, so the shape shows who was on top and when. A flat line that jumps once near the end is a smash and grab.

Things to watch

The stored prediction is the one made before the match, kept deliberately so it can be judged afterwards. It is not re-fitted with hindsight.

Press esc to close Read the full guide