Zurich vs Grasshoppers

9 May 2026 · Swiss Super League · 2025/26 · Referee Lukas Fahndrich

Full time 2 – 1

Half-time: 0–1

  • Alexander Hack 49’
  • Ilan Sauter 61’
  • Felix Tsimba 35’

Match summary

Zurich came from behind to win 2-1 at home to Grasshoppers. Grasshoppers led 1-0 at half-time.

Felix Tsimba put Grasshoppers ahead with a header in the 35th minute, Alexander Hack equalised with a header in the 49th minute, and Ilan Sauter won it in the 61st minute.

There was little between the sides on chances: Zurich created 1.11 expected goals (xG) from 16 shots, Grasshoppers 0.96 from 5. Jonathan Asp Jensen had a penalty saved for Grasshoppers. Grasshoppers had a player sent off.

Match stats

57% Possession 43%
16 Shots 5
7 Shots on target 3
6 Corners 4
84 Attacks 60
48 Dangerous attacks 27
436 Passes 329
76.4% Pass accuracy 72.3%
20 Tackles 24
12 Fouls 13
2 Yellow cards 1
0 Red cards 1

Key events

Zurich Grasshoppers
Kick-off
Lindrit KamberiShot on target
4’
Juan José PereaShot on target
7’
23’
Ilan SauterShot on target
30’
35’
Felix TsimbaHeader0-1 (Grasshoppers)
45’
Felix TsimbaVAR: Card upgraded
45+1’
Half-time0-1
Second half underway
Alexander HackHeader1-1 (Zurich)
49’
Ilan SauterLeft foot shot2-1 (Zurich)
61’
65’
Dirk AbelsVAR: No penalty
66’
Jonathan Asp JensenMissed penaltysaved
66’
Jonathan Asp JensenShot on target
Nelson PalacioShot on target
70’
Matthias PhaëtonBledian Krasniqi
73’
Umeh EmmanuelIvan Cavaleiro
73’
79’
85’
Ismajl BekaHassane Imourane
86’
Michael FreyShot on target
87’
Philippe KenyShot on target
89’

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 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.11 0.96 35’ Felix Tsimba (Grasshoppers), 0-1 35’ 49’ Alexander Hack (Zurich), 1-1 49’ 61’ Ilan Sauter (Zurich), 2-1 61’ 0.0 0.5 1.0 1.5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.11 0.96 35’ Felix Tsimba (Grasshoppers), 0-1 Tsimba 35’ 49’ Alexander Hack (Zurich), 1-1 Hack 49’ 61’ Ilan Sauter (Zurich), 2-1 Sauter 61’
Zurich 1.11 xGGrasshoppers 0.96 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 Grasshoppers attacking Zurich attacking 
66’ Jonathan Asp Jensen (Grasshoppers), penalty, 0.79 xG, saved 49’ Alexander Hack (Zurich), from a corner, 0.26 xG, goal 30’ Ilan Sauter (Zurich), from a corner, 0.17 xG, saved 28’ Juan José Perea (Zurich), set piece, 0.15 xG, blocked 7’ Juan José Perea (Zurich), open play, 0.14 xG, saved 89’ Philippe Keny (Zurich), open play, 0.11 xG, saved 35’ Felix Tsimba (Grasshoppers), open play, 0.08 xG, goal 48’ Juan José Perea (Zurich), open play, 0.06 xG, blocked 18’ Samuel Krasniqi (Grasshoppers), open play, 0.05 xG, off target 39’ Philippe Keny (Zurich), open play, 0.04 xG, off target 4’ Lindrit Kamberi (Zurich), direct free kick, 0.03 xG, saved 61’ Ilan Sauter (Zurich), open play, 0.03 xG, goal 28’ Nelson Palacio (Zurich), open play, 0.03 xG, blocked 71’ Ivan Cavaleiro (Zurich), open play, 0.03 xG, blocked 84’ Umeh Emmanuel (Zurich), from a corner, 0.02 xG, off target 86’ Michael Frey (Grasshoppers), open play, 0.02 xG, saved 70’ Nelson Palacio (Zurich), open play, 0.01 xG, saved 29’ Lindrit Kamberi (Zurich), open play, 0.01 xG, blocked 90+3’ Valon Berisha (Zurich), open play, 0.01 xG, off target 49’ Selmin Hodza (Zurich), open play, 0.01 xG, blocked 90’ Mouhamed El Ngom (Grasshoppers), open play, 0.01 xG, off target 66’ Jonathan Asp Jensen (Grasshoppers), penalty, 0.79 xG, saved 49’ Alexander Hack (Zurich), from a corner, 0.26 xG, goal 30’ Ilan Sauter (Zurich), from a corner, 0.17 xG, saved 28’ Juan José Perea (Zurich), set piece, 0.15 xG, blocked 7’ Juan José Perea (Zurich), open play, 0.14 xG, saved 89’ Philippe Keny (Zurich), open play, 0.11 xG, saved 35’ Felix Tsimba (Grasshoppers), open play, 0.08 xG, goal 48’ Juan José Perea (Zurich), open play, 0.06 xG, blocked 18’ Samuel Krasniqi (Grasshoppers), open play, 0.05 xG, off target 39’ Philippe Keny (Zurich), open play, 0.04 xG, off target 4’ Lindrit Kamberi (Zurich), direct free kick, 0.03 xG, saved 61’ Ilan Sauter (Zurich), open play, 0.03 xG, goal 71’ Ivan Cavaleiro (Zurich), open play, 0.03 xG, blocked 28’ Nelson Palacio (Zurich), open play, 0.03 xG, blocked 84’ Umeh Emmanuel (Zurich), from a corner, 0.02 xG, off target 86’ Michael Frey (Grasshoppers), open play, 0.02 xG, saved 70’ Nelson Palacio (Zurich), open play, 0.01 xG, saved 29’ Lindrit Kamberi (Zurich), open play, 0.01 xG, blocked 49’ Selmin Hodza (Zurich), open play, 0.01 xG, blocked 90’ Mouhamed El Ngom (Grasshoppers), open play, 0.01 xG, off target 90+3’ Valon Berisha (Zurich), open play, 0.01 xG, off target
Size shows xG Goal On target Off target or blocked

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

Lineups

Zurich 4-4-1-1 Starting XI
Huber
Hack
Sauter
Hodza 85’
Kamberi
Cavaleiro 73’
Tsawa 73’
Palacio
Krasniqi 73’
Perea 85’
Keny
Grasshoppers 4-1-4-1 Starting XI
Hammel
Abels
Ngom
Rissi 74’
Köhler
Imourane 85’
Krasniqi 74’
Meyer
Abrashi 56’
Jensen 74’
Tsimba

Player stats

Goalkeeper1 player
90′ 2 1 24 – – – –
Defenders5 players
Selmin Hodza Taken off
85′ 4 1 – 6 1 55 – – – –
90′ – – – 3 2 55 1 – – –
90′ 1 – – 7 2 62 – 1 – –
90′ 4 – – 7 2 45 1 1 – –
David Vujević Came on as a substitute
10′ – 1 – – – 2 1 – – –
Midfielders6 players
Cheveyo Tsawa Taken off
73′ – 1 23 3 – 2 – 5 1 3
90′ – – 54 – – 2 – 5 1 – –
Ivan Cavaleiro Taken off
73′ – 1 35 1 – – – 1 1 – –
Bledian Krasniqi Taken off
73′ – – 27 1 – 3 – 5 – 1 –
Matthias Phaëton Came on as a substitute
17′ – – 10 – – – – – – – –
Valon Berisha Came on as a substitute
17′ – – 14 – – 3 – 3 2 – –
Forwards4 players
Juan José Perea Taken off
85′ – – 3 1 0.35 – – 2 – 4 –
90′ – – 2 1 0.14 – 1 3 – 16 –
Umeh Emmanuel Came on as a substitute
17′ – – 1 – 0.02 – – 1 1 5 –
Din Ramic Came on as a substitute
10′ – – – – – – 1 – – 4 –
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.