Hearts vs Rangers

28 October 2026 · Scottish Premiership · 2026/27 · Referee D Robertson

Full time 2 – 2

Half-time: 0–1

  • Cláudio Braga 48’
  • Calvin Miller 57’
  • Kevin Kelsy 16’
  • Olwethu Makhanya 89’

Match summary

Hearts and Rangers drew 2-2. Rangers led 1-0 at half-time.

In the first half, Kevin Kelsy put Rangers ahead in the 16th minute. In the second half, Cláudio Braga equalised in the 48th minute, Calvin Miller put Hearts in front in the 57th minute, and Olwethu Makhanya equalised with a header in the 89th minute.

Rangers had the better of the chances, with 2.21 expected goals (xG) from 14 shots to Hearts's 1.71 from 17.

Match stats

47% Possession 53%
17 Shots 14
6 Shots on target 6
4 Corners 4
76 Attacks 83
53 Dangerous attacks 54
332 Passes 387
71.1% Pass accuracy 75.5%
13 Tackles 18
12 Fouls 20
2 Yellow cards 4
0 Offsides 1

Key events

Hearts Rangers
Kick-off
4’
16’
Kevin KelsyLeft foot shot0-1 (Rangers)
Cláudio BragaShot on target
22’
Calvin MillerShot on target
26’
43’
Ryan Don NaderiShot on target
44’
Jordi AltenaShot on target
45’
Half-time0-1
Cláudio BragaRight foot shot1-1 (Hearts)
48’
Second half underway
Calvin MillerLeft foot shot2-1 (Hearts)
57’
61’
W. VranckenManagerArgument
66’
68’
Badredine BouananiShot on target
70’
72’
Cláudio BragaShot on target
76’
79’
Dan NeilShot on target
87’
89’
Olwethu MakhanyaHeader2-2 (Rangers)
90+3’
Dujon SterlingShot on target
Full-time2-2

How the chances added up

Running total of expected goals (xG) for each side through the match. xG rates each chance by how often similar shots are scored. A goal is marked where it was scored.

0.0 0.5 1.0 1.5 2.0 2.5 3.0 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.71 2.21 16’ Kevin Kelsy (Rangers), 0-1 16’ 48’ Cláudio Braga (Hearts), 1-1 48’ 57’ Calvin Miller (Hearts), 2-1 57’ 89’ Olwethu Makhanya (Rangers), 2-2 89’ 0.0 0.5 1.0 1.5 2.0 2.5 3.0 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.71 2.21 16’ Kevin Kelsy (Rangers), 0-1 Kelsy 16’ 48’ Cláudio Braga (Hearts), 1-1 Braga 48’ 57’ Calvin Miller (Hearts), 2-1 Miller 57’ 89’ Olwethu Makhanya (Rangers), 2-2 Makhanya 89’
Hearts 1.71 xGRangers 2.21 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 Rangers attacking Hearts attacking 
90+3’ Dujon Sterling (Rangers), open play, 0.83 xG, saved 16’ Kevin Kelsy (Rangers), open play, 0.72 xG, goal 48’ Cláudio Braga (Hearts), set piece, 0.53 xG, goal 57’ Calvin Miller (Hearts), open play, 0.27 xG, goal 76’ Cláudio Braga (Hearts), open play, 0.20 xG, saved 57’ Cláudio Braga (Hearts), open play, 0.14 xG, off target 22’ Cláudio Braga (Hearts), set piece, 0.11 xG, saved 90+1’ Badredine Bouanani (Rangers), open play, 0.11 xG, off target 89’ Olwethu Makhanya (Rangers), set piece, 0.10 xG, goal 74’ Olwethu Makhanya (Rangers), from a corner, 0.09 xG, off target 83’ Jerome Williams (Hearts), open play, 0.08 xG, off target 69’ Badredine Bouanani (Rangers), open play, 0.07 xG, blocked 28’ Laurent Mendy (Hearts), set piece, 0.07 xG, off target 68’ Badredine Bouanani (Rangers), open play, 0.07 xG, saved 45’ Jordi Altena (Hearts), direct free kick, 0.06 xG, saved 82’ Badredine Bouanani (Rangers), open play, 0.06 xG, blocked 26’ Sabah Kerjota (Hearts), open play, 0.05 xG, blocked 79’ Dan Neil (Rangers), open play, 0.05 xG, saved 26’ Calvin Miller (Hearts), open play, 0.04 xG, saved 43’ Ryan Don Naderi (Rangers), open play, 0.04 xG, saved 46’ Josh McPake (Hearts), open play, 0.04 xG, blocked 72’ Ryan Don Naderi (Rangers), open play, 0.03 xG, blocked 39’ Laurent Mendy (Hearts), set piece, 0.03 xG, off target 62’ Jamie McCart (Hearts), set piece, 0.03 xG, off target 2’ Rogers Mato (Hearts), open play, 0.02 xG, off target 86’ Tomas Magnusson (Hearts), open play, 0.02 xG, off target 51’ Josh McPake (Hearts), from a corner, 0.01 xG, off target 72’ Tuur Rommens (Rangers), from a corner, 0.02 xG, blocked 11’ Nicolas Raskin (Rangers), open play, 0.01 xG, blocked 19’ Min-su Kim (Rangers), open play, 0.01 xG, blocked 43’ Calvin Miller (Hearts), open play, 0.01 xG, blocked 90+3’ Dujon Sterling (Rangers), open play, 0.83 xG, saved 16’ Kevin Kelsy (Rangers), open play, 0.72 xG, goal 48’ Cláudio Braga (Hearts), set piece, 0.53 xG, goal 57’ Calvin Miller (Hearts), open play, 0.27 xG, goal 76’ Cláudio Braga (Hearts), open play, 0.20 xG, saved 57’ Cláudio Braga (Hearts), open play, 0.14 xG, off target 22’ Cláudio Braga (Hearts), set piece, 0.11 xG, saved 90+1’ Badredine Bouanani (Rangers), open play, 0.11 xG, off target 89’ Olwethu Makhanya (Rangers), set piece, 0.10 xG, goal 74’ Olwethu Makhanya (Rangers), from a corner, 0.09 xG, off target 83’ Jerome Williams (Hearts), open play, 0.08 xG, off target 69’ Badredine Bouanani (Rangers), open play, 0.07 xG, blocked 28’ Laurent Mendy (Hearts), set piece, 0.07 xG, off target 68’ Badredine Bouanani (Rangers), open play, 0.07 xG, saved 45’ Jordi Altena (Hearts), direct free kick, 0.06 xG, saved 82’ Badredine Bouanani (Rangers), open play, 0.06 xG, blocked 79’ Dan Neil (Rangers), open play, 0.05 xG, saved 26’ Sabah Kerjota (Hearts), open play, 0.05 xG, blocked 26’ Calvin Miller (Hearts), open play, 0.04 xG, saved 43’ Ryan Don Naderi (Rangers), open play, 0.04 xG, saved 46’ Josh McPake (Hearts), open play, 0.04 xG, blocked 72’ Ryan Don Naderi (Rangers), open play, 0.03 xG, blocked 62’ Jamie McCart (Hearts), set piece, 0.03 xG, off target 39’ Laurent Mendy (Hearts), set piece, 0.03 xG, off target 2’ Rogers Mato (Hearts), open play, 0.02 xG, off target 86’ Tomas Magnusson (Hearts), open play, 0.02 xG, off target 72’ Tuur Rommens (Rangers), from a corner, 0.02 xG, blocked 11’ Nicolas Raskin (Rangers), open play, 0.01 xG, blocked 19’ Min-su Kim (Rangers), open play, 0.01 xG, blocked 51’ Josh McPake (Hearts), from a corner, 0.01 xG, off target 43’ Calvin Miller (Hearts), open play, 0.01 xG, blocked
Size shows xG Goal On target Off target or blocked

Hover or tap a shot for the player, minute and xG.

Lineups

Hearts 4-2-3-1 Starting XI
Reus
Fagan-Walcott
McCart
Mendy
Altena
Magnusson
Kerjota
Mato 33’
McPake 90’
Miller 78’
Braga 78’
Rangers 4-2-3-1 Starting XI
Pandur
Penrice 63’
Fernandez
Makhanya
Sterling
Neil 84’
Raskin
Kim 84’
Gassama 54’
Naderi 85’
Kelsy

Player stats

Goalkeeper1 player
90′ 4 2 14 1 – – – –
Defenders4 players
90′ 2 3 – 6 1 27 1 – –
90′ 1 – 1 3 1 31 4 – 1 –
90′ 1 2 – 10 9 35 2 – – –
Stephen Kingsley Came on as a substitute
57′ – 1 1 3 3 31 – – – –
Midfielders6 players
Rogers Mato Taken off
33′ – – 5 1 – 1 – 2 – – –
90′ – – 36 – – 1 3 11 – 1 –
90′ – – 39 2 – 1 2 8 1 3 –
90′ – – 27 1 – 2 1 10 1 4
Calvin Miller Taken off
78′ 1 – 34 2 – – – 1 – – –
Josh McPake Taken off
89′ – – 26 – – 2 1 9 – 7 –
Forwards3 players
Cláudio Braga Taken off
78′ 1 – 4 3 0.98 – – 8 1 17 –
James Wilson Came on as a substitute
12′ – – – – – – – 1 1 1 –
Jerome Williams Came on as a substitute
12′ – – 1 – 0.08 – – 3 – 8 –
Came on Taken off Sent off Red is the most in that position for the team

Every player who took the pitch, starters first and then substitutes. A dash means none. xG and xA are expected goals and assists.

Before kick-off

Hearts win 27% Avg odds 3.50
Draw 25% Avg odds 3.72
Rangers win 48% Avg odds 1.95

Chances implied by the average closing odds, with the bookmaker margin removed.

Form going into the game

Last five league games before this one, oldest first. Select one to open it.

Previous and next meeting

Shots, expected goals, timeline, lineups, team and player statistics from Bzzoiro Sports Data (sports.bzzoiro.com). Results and odds from football-data.co.uk.