Grasshoppers vs Luzern

26 July 2025 · Swiss Super League · 2025/26 · Referee Anojen Kanagasingam

Full time 2 – 3

Half-time: 2–2

  • Nikolas Muci 5’ (pen)
  • Luke Plange 31’
  • Matteo Di Giusto 16’
  • Adrian Grbić 38’ (pen)
  • Lucas Silva 69’

Match summary

Luzern came from behind to win 3-2 away at Grasshoppers. It was 2-2 at half-time.

In the first half, Nikolas Muci put Grasshoppers ahead from the penalty spot in the 5th minute, Matteo Di Giusto equalised in the 16th minute, Luke Plange put Grasshoppers back in front in the 31st minute, and Adrian Grbić equalised from the penalty spot in the 38th minute. In the second half, Lucas Silva won it in the 69th minute.

The chances backed that up: Luzern created 2.34 expected goals (xG) from 11 shots to Grasshoppers's 1.33 from 15.

Match stats

45% Possession 55%
15 Shots 11
5 Shots on target 5
9 Corners 4
312 Passes 407
67.0% Pass accuracy 70.3%
16 Tackles 21
12 Fouls 5
3 Yellow cards 1
1 Offsides 0

Key events

Grasshoppers Luzern
Kick-off
Nikolas MuciPenalty1-0 (Grasshoppers)
5’
Luke PlangeShot on target
8’
16’
Matteo Di GiustoRight foot shot1-1 (Luzern)
21’
Kevin SpadanudaShot on target
Tomas Veron LupiShot on target
25’
Allan ArigoniShot on target
30’
Luke PlangeRight foot shot2-1 (Grasshoppers)
31’
37’
38’
Adrian GrbićPenalty2-2 (Luzern)
Half-time2-2
Second half underway
62’
Julian Von MoosShot on target
69’
Lucas SilvaLeft foot shot2-3 (Luzern)
Samuel MarquesTomas Veron Lupi
70’
Dirk AbelsMaksim Paskotsi
78’
82’
Sinan KarweinaMatteo Di Giusto
83’
Andrej VasovicAdrian Grbić
90+6’
Sinan Karweina
90+6’
Full-time2-3

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.33 2.34 5’ Nikolas Muci (Grasshoppers), 1-0 5’ 16’ Matteo Di Giusto (Luzern), 1-1 16’ 31’ Luke Plange (Grasshoppers), 2-1 31’ 38’ Adrian Grbić (Luzern), 2-2 38’ 69’ Lucas Silva (Luzern), 2-3 69’ 0.0 0.5 1.0 1.5 2.0 2.5 3.0 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.33 2.34 5’ Nikolas Muci (Grasshoppers), 1-0 Muci 5’ 16’ Matteo Di Giusto (Luzern), 1-1 Di Giusto 16’ 31’ Luke Plange (Grasshoppers), 2-1 Plange 31’ 38’ Adrian Grbić (Luzern), 2-2 Grbić 38’ 69’ Lucas Silva (Luzern), 2-3 Silva 69’
Grasshoppers 1.33 xGLuzern 2.34 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 Luzern attacking Grasshoppers attacking 
5’ Nikolas Muci (Grasshoppers), penalty, 0.79 xG, goal 38’ Adrian Grbić (Luzern), penalty, 0.79 xG, goal 69’ Lucas Silva (Luzern), set piece, 0.45 xG, goal 16’ Matteo Di Giusto (Luzern), open play, 0.38 xG, goal 29’ Sascha Britschgi (Luzern), set piece, 0.19 xG, blocked 21’ Kevin Spadanuda (Luzern), open play, 0.16 xG, saved 29’ Sascha Britschgi (Luzern), set piece, 0.11 xG, off target 22’ Stefan Knežević (Luzern), set piece, 0.09 xG, off target 62’ Julian Von Moos (Luzern), open play, 0.08 xG, saved 8’ Luke Plange (Grasshoppers), open play, 0.08 xG, saved 90+2’ Dorian Paloschi (Grasshoppers), from a corner, 0.08 xG, off target 25’ Tomas Veron Lupi (Grasshoppers), open play, 0.06 xG, saved 53’ Nikolas Muci (Grasshoppers), from a corner, 0.05 xG, off target 80’ Matteo Di Giusto (Luzern), open play, 0.05 xG, off target 31’ Luke Plange (Grasshoppers), set piece, 0.05 xG, goal 10’ Tomas Veron Lupi (Grasshoppers), open play, 0.04 xG, off target 30’ Allan Arigoni (Grasshoppers), open play, 0.04 xG, saved 35’ Tomas Veron Lupi (Grasshoppers), open play, 0.04 xG, hit the woodwork 23’ Allan Arigoni (Grasshoppers), open play, 0.03 xG, blocked 82’ Adrian Grbić (Luzern), open play, 0.03 xG, off target 90+1’ Luke Plange (Grasshoppers), open play, 0.03 xG, off target 55’ Pius Dorn (Luzern), open play, 0.02 xG, blocked 26’ Simone Stroscio (Grasshoppers), open play, 0.02 xG, off target 90+6’ Loris Giandomenico (Grasshoppers), open play, 0.02 xG, off target 57’ Maksim Paskotsi (Grasshoppers), from a corner, 0.01 xG, off target 27’ Maksim Paskotsi (Grasshoppers), from a corner, 0.01 xG, off target 5’ Nikolas Muci (Grasshoppers), penalty, 0.79 xG, goal 38’ Adrian Grbić (Luzern), penalty, 0.79 xG, goal 69’ Lucas Silva (Luzern), set piece, 0.45 xG, goal 16’ Matteo Di Giusto (Luzern), open play, 0.38 xG, goal 29’ Sascha Britschgi (Luzern), set piece, 0.19 xG, blocked 21’ Kevin Spadanuda (Luzern), open play, 0.16 xG, saved 29’ Sascha Britschgi (Luzern), set piece, 0.11 xG, off target 22’ Stefan Knežević (Luzern), set piece, 0.09 xG, off target 62’ Julian Von Moos (Luzern), open play, 0.08 xG, saved 8’ Luke Plange (Grasshoppers), open play, 0.08 xG, saved 90+2’ Dorian Paloschi (Grasshoppers), from a corner, 0.08 xG, off target 25’ Tomas Veron Lupi (Grasshoppers), open play, 0.06 xG, saved 53’ Nikolas Muci (Grasshoppers), from a corner, 0.05 xG, off target 80’ Matteo Di Giusto (Luzern), open play, 0.05 xG, off target 31’ Luke Plange (Grasshoppers), set piece, 0.05 xG, goal 10’ Tomas Veron Lupi (Grasshoppers), open play, 0.04 xG, off target 30’ Allan Arigoni (Grasshoppers), open play, 0.04 xG, saved 35’ Tomas Veron Lupi (Grasshoppers), open play, 0.04 xG, hit the woodwork 23’ Allan Arigoni (Grasshoppers), open play, 0.03 xG, blocked 90+1’ Luke Plange (Grasshoppers), open play, 0.03 xG, off target 82’ Adrian Grbić (Luzern), open play, 0.03 xG, off target 55’ Pius Dorn (Luzern), open play, 0.02 xG, blocked 26’ Simone Stroscio (Grasshoppers), open play, 0.02 xG, off target 90+6’ Loris Giandomenico (Grasshoppers), open play, 0.02 xG, off target 57’ Maksim Paskotsi (Grasshoppers), from a corner, 0.01 xG, off target 27’ Maksim Paskotsi (Grasshoppers), from a corner, 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

Grasshoppers 3-4-3 Starting XI
Hammel
Bettkober 46’
Decarli
Paskotsi 78’
Arigoni
Abrashi
Imourane 63’
Stroscio 70’
Plange
Muci
Lupi 70’
Luzern 4-2-3-1 Starting XI
Loretz
Knežević
Bajrami
Freimann 63’
Dorn
Owusu
Britschgi 90’
Spadanuda
Giusto 82’
Moos 63’
Grbić 83’

Player stats

Goalkeeper1 player
90′ 2 3 24 – – – – –
Defenders6 players
Yannick Bettkober Taken off
45′ – 1 – 1 – 9 2 – – –
Saulo Decarli
90′ – – – 6 6 20 – – – –
Maksim Paskotsi Taken off
78′ 1 4 – 7 5 21 – – – –
Dorian Paloschi Came on as a substitute
45′ 1 – – 1 – 22 – – – –
Loris Giandomenico Came on as a substitute
20′ – 1 – – – 4 – – – –
Dirk Abels Came on as a substitute
12′ – 1 – – – 5 – – – –
Midfielders7 players
90′ – – 27 2 – 1 2 2 1 – –
90′ – – 34 – – 2 2 5 2 1 –
Hassane Imourane Taken off
63′ – – 25 – – 4 1 6 1 – –
Simone Stroscio Taken off
70′ – – 23 1 – 3 1 4 – – –
Tomas Veron Lupi Taken off
70′ – – 20 2 – – – 2 2 1 –
Matteo Mantini Came on as a substitute
27′ – – 14 – – 3 2 4 – – –
Samuel Marques Came on as a substitute
20′ – – 4 – – – – – – – –
Forwards2 players
90′ 1 – 3 2 0.16 – 1 6 1 28 –
90′ 1 – 2 1 0.84 – 2 6 1 32 –
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.