Grasshoppers vs Luzern

25 April 2026 · Swiss Super League · 2025/26 · Referee Anojen Kanagasingam

Full time 1 – 2

Half-time: 1–0

  • Hassane Imourane 37’
  • Kevin Spadanuda 57’, 82’

Match summary

Luzern came from behind to win 2-1 away at Grasshoppers. Grasshoppers led 1-0 at half-time.

Hassane Imourane put Grasshoppers ahead in the 37th minute, Kevin Spadanuda equalised with a header in the 57th minute, and Spadanuda won it in the 82nd minute.

The chances backed that up: Luzern created 2.29 expected goals (xG) from 19 shots to Grasshoppers's 0.89 from 11.

Match stats

42% Possession 58%
11 Shots 19
4 Shots on target 6
5 Corners 6
115 Attacks 119
55 Dangerous attacks 69
363 Passes 502
76.6% Pass accuracy 80.7%
19 Tackles 14
6 Fouls 9
0 Yellow cards 1
1 Offsides 0

Key events

Grasshoppers Luzern
Kick-off
Jonathan Asp JensenShot on target
4’
12’
Rúben DantasShot on target
Jonathan Asp JensenShot on target
34’
Hassane ImouraneLeft foot shot1-0 (Grasshoppers)
37’
Half-time1-0
Second half underway
48’
57’
Kevin SpadanudaHeader1-1 (Luzern)
Michael FreyShot on target
57’
66’
Kevin SpadanudaShot on target
73’
Oscar KabwitShot on target
80’
Sinan KarweinaMatteo Di Giusto
82’
Kevin SpadanudaRight foot shot1-2 (Luzern)
Salifou DiarrassoubaFelix Tsimba
83’
84’
Kevin SpadanudaShot on target
86’
Severin OttigerAndrej Vasovic

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 0.89 2.29 37’ Hassane Imourane (Grasshoppers), 1-0 37’ 57’ Kevin Spadanuda (Luzern), 1-1 57’ 82’ Kevin Spadanuda (Luzern), 1-2 82’ 0.0 0.5 1.0 1.5 2.0 2.5 3.0 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 0.89 2.29 37’ Hassane Imourane (Grasshoppers), 1-0 Imourane 37’ 57’ Kevin Spadanuda (Luzern), 1-1 Spadanuda 57’ 82’ Kevin Spadanuda (Luzern), 1-2 Spadanuda 82’
Grasshoppers 0.89 xGLuzern 2.29 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 Luzern attacking Grasshoppers attacking 
82’ Kevin Spadanuda (Luzern), open play, 0.66 xG, goal 84’ Kevin Spadanuda (Luzern), open play, 0.47 xG, saved 37’ Hassane Imourane (Grasshoppers), open play, 0.26 xG, goal 17’ Pius Dorn (Luzern), open play, 0.14 xG, off target 44’ Matteo Di Giusto (Luzern), open play, 0.14 xG, blocked 56’ Samuel Marques (Grasshoppers), open play, 0.13 xG, off target 66’ Kevin Spadanuda (Luzern), open play, 0.11 xG, saved 90+1’ Young-Jun Lee (Grasshoppers), open play, 0.11 xG, off target 57’ Kevin Spadanuda (Luzern), open play, 0.09 xG, goal 62’ Adrian Bajrami (Luzern), from a corner, 0.08 xG, off target 54’ Jonathan Asp Jensen (Grasshoppers), open play, 0.08 xG, off target 20’ Andrej Vasovic (Luzern), open play, 0.07 xG, blocked 90’ Andrejs Cigaņiks (Luzern), open play, 0.07 xG, blocked 57’ Michael Frey (Grasshoppers), open play, 0.06 xG, saved 90’ Sinan Karweina (Luzern), open play, 0.06 xG, hit the woodwork 12’ Rúben Dantas (Luzern), from a corner, 0.06 xG, saved 68’ Oscar Kabwit (Luzern), from a corner, 0.06 xG, blocked 84’ Dominik Papic (Grasshoppers), open play, 0.06 xG, blocked 4’ Jonathan Asp Jensen (Grasshoppers), open play, 0.05 xG, saved 20’ Matteo Di Giusto (Luzern), open play, 0.06 xG, off target 90+2’ Sinan Karweina (Luzern), open play, 0.05 xG, off target 88’ Salifou Diarrassouba (Grasshoppers), set piece, 0.05 xG, off target 64’ Michael Frey (Grasshoppers), open play, 0.05 xG, off target 69’ Andrejs Cigaņiks (Luzern), open play, 0.05 xG, off target 90+2’ Severin Ottiger (Luzern), open play, 0.04 xG, off target 73’ Oscar Kabwit (Luzern), open play, 0.04 xG, saved 80’ Michael Frey (Grasshoppers), open play, 0.03 xG, blocked 34’ Jonathan Asp Jensen (Grasshoppers), open play, 0.03 xG, saved 47’ Andrej Vasovic (Luzern), open play, 0.02 xG, off target 46’ Taisei Abe (Luzern), set piece, 0.02 xG, blocked 82’ Kevin Spadanuda (Luzern), open play, 0.66 xG, goal 84’ Kevin Spadanuda (Luzern), open play, 0.47 xG, saved 37’ Hassane Imourane (Grasshoppers), open play, 0.26 xG, goal 17’ Pius Dorn (Luzern), open play, 0.14 xG, off target 44’ Matteo Di Giusto (Luzern), open play, 0.14 xG, blocked 56’ Samuel Marques (Grasshoppers), open play, 0.13 xG, off target 66’ Kevin Spadanuda (Luzern), open play, 0.11 xG, saved 90+1’ Young-Jun Lee (Grasshoppers), open play, 0.11 xG, off target 57’ Kevin Spadanuda (Luzern), open play, 0.09 xG, goal 62’ Adrian Bajrami (Luzern), from a corner, 0.08 xG, off target 54’ Jonathan Asp Jensen (Grasshoppers), open play, 0.08 xG, off target 20’ Andrej Vasovic (Luzern), open play, 0.07 xG, blocked 90’ Andrejs Cigaņiks (Luzern), open play, 0.07 xG, blocked 57’ Michael Frey (Grasshoppers), open play, 0.06 xG, saved 90’ Sinan Karweina (Luzern), open play, 0.06 xG, hit the woodwork 68’ Oscar Kabwit (Luzern), from a corner, 0.06 xG, blocked 84’ Dominik Papic (Grasshoppers), open play, 0.06 xG, blocked 12’ Rúben Dantas (Luzern), from a corner, 0.06 xG, saved 20’ Matteo Di Giusto (Luzern), open play, 0.06 xG, off target 4’ Jonathan Asp Jensen (Grasshoppers), open play, 0.05 xG, saved 90+2’ Sinan Karweina (Luzern), open play, 0.05 xG, off target 88’ Salifou Diarrassouba (Grasshoppers), set piece, 0.05 xG, off target 64’ Michael Frey (Grasshoppers), open play, 0.05 xG, off target 69’ Andrejs Cigaņiks (Luzern), open play, 0.05 xG, off target 90+2’ Severin Ottiger (Luzern), open play, 0.04 xG, off target 73’ Oscar Kabwit (Luzern), open play, 0.04 xG, saved 80’ Michael Frey (Grasshoppers), open play, 0.03 xG, blocked 34’ Jonathan Asp Jensen (Grasshoppers), open play, 0.03 xG, saved 47’ Andrej Vasovic (Luzern), open play, 0.02 xG, off target 46’ Taisei Abe (Luzern), set piece, 0.02 xG, blocked
Size shows xG Goal On target Off target or blocked

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

Lineups

Grasshoppers 4-4-2 Starting XI
Hammel
Ullmann 79’
Ngom
Beka
Marques 79’
Zvonarek 69’
Abrashi
Jensen
Imourane
Tsimba 83’
Frey 83’
Luzern 4-3-1-2 Starting XI
Loretz
Dantas 58’
Freimann
Bajrami
Dorn
Owusu
Abe
Giusto 80’
Silva 46’
Villiger 46’
Vasovic 86’

Player stats

Goalkeeper1 player
90′ 4 2 25 – – – – –
Defenders4 players
90′ 1 4 – 3 – 39 – – – –
Ismajl Beka
90′ 2 1 – 4 – 37 – – – –
Maximilian Ullmann Taken off
79′ 2 – – 4 – 21 – – – –
Luka Mikulic Came on as a substitute
11′ – – – – – 12 – – – –
Midfielders7 players
Samuel Marques Taken off
79′ – – 22 – – 3 1 3 1 – –
Lovro Zvonarek Taken off
69′ – – 24 1 – – 1 2 – 1 –
90′ – – 42 1 – 2 – 2 2 – –
90′ – – – – –
90′ 1 – 25 – – 2 2 2 – – –
Dominik Papic Came on as a substitute
21′ – – 17 – – 2 1 2 – – –
Denis Sahin Came on as a substitute
11′ – – 9 1 – 1 – 2 – – –
Forwards4 players
Felix Tsimba Taken off
83′ – – – – – – 1 2 1 11 –
Michael Frey Taken off
83′ – – 3 1 0.14 – – 8 1 35 –
Salifou Diarrassouba Came on as a substitute
12′ – – 1 – 0.05 – – – – 3 –
Young-Jun Lee Came on as a substitute
12′ – – 1 – 0.11 – – – – 3 –
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. A blank cell means that figure is not available for that player.

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.