Portland Timbers vs San Diego FC

20 August 2026 · MLS · 2026 · Referee Rubiel Vazquez

Full time 3 – 1

Half-time: 1–1

  • Kristoffer Velde 29’
  • Ariel Lassiter 51’
  • David Pereira Da Costa 68’
  • Gabriel Pirani 45+1’

Match summary

Portland Timbers beat San Diego FC 3-1. It was 1-1 at half-time.

In the first half, Kristoffer Velde put Portland Timbers ahead in the 29th minute and Gabriel Pirani equalised in first-half stoppage time. In the second half, Ariel Lassiter put Portland Timbers back in front in the 51st minute and David Pereira Da Costa made it 3-1 in the 68th minute.

There was little between the sides on chances: Portland Timbers created 1.60 expected goals (xG) from 11 shots, San Diego FC 1.40 from 21.

Match stats

30% Possession 70%
11 Shots 21
5 Shots on target 6
0 Corners 7
66 Attacks 105
37 Dangerous attacks 64
322 Passes 740
83.2% Pass accuracy 91.6%
16 Tackles 19
15 Fouls 11
2 Yellow cards 1
3 Offsides 1

Key events

Portland Timbers San Diego FC
Kick-off
5’
Gabriel PiraniShot on target
11’
Lewis MorganShot on target
17’
Kristoffer VeldeRight foot shot1-0 (Portland Timbers)
29’
Kevin KelsyShot on target
31’
36’
Corner
45+1’
Gabriel PiraniRight foot shot1-1 (San Diego FC)
Half-time1-1
Second half underway
49’
Gabriel PiraniShot on target
49’
Corner
Ariel LassiterLeft foot shot2-1 (Portland Timbers)
51’
Ariel LassiterShot on target
58’
64’
Marcus IngvartsenShot on target
64’
Corner
65’
Corner
65’
Corner
David Pereira Da CostaRight foot shot3-1 (Portland Timbers)
68’
76’
Oscar VerhoevenShot on target
84’
Corner
85’
Corner
90+1’
Kevin KelsyHandball
90+6’
Full-time3-1

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 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.60 1.40 29’ Kristoffer Velde (Portland Timbers), 1-0 29’ 45+1’ Gabriel Pirani (San Diego FC), 1-1 45+1’ 51’ Ariel Lassiter (Portland Timbers), 2-1 51’ 68’ David Pereira Da Costa (Portland Timbers), 3-1 68’ 0.0 0.5 1.0 1.5 2.0 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.60 1.40 29’ Kristoffer Velde (Portland Timbers), 1-0 Velde 29’ 45+1’ Gabriel Pirani (San Diego FC), 1-1 Pirani 45+1’ 51’ Ariel Lassiter (Portland Timbers), 2-1 Lassiter 51’ 68’ David Pereira Da Costa (Portland Timbers), 3-1 Da Costa 68’
Portland Timbers 1.60 xGSan Diego FC 1.40 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 San Diego FC attacking Portland Timbers attacking 
51’ Ariel Lassiter (Portland Timbers), open play, 0.69 xG, goal 56’ Kevin Kelsy (Portland Timbers), open play, 0.41 xG, off target 31’ Kevin Kelsy (Portland Timbers), open play, 0.23 xG, saved 76’ Oscar Verhoeven (San Diego FC), open play, 0.19 xG, saved 82’ Elias Achouri (San Diego FC), open play, 0.14 xG, off target 81’ Gabriel Pirani (San Diego FC), open play, 0.13 xG, blocked 39’ Jeppe Tverskov (San Diego FC), open play, 0.10 xG, off target 46’ Gabriel Pirani (San Diego FC), open play, 0.10 xG, goal 43’ Gabriel Pirani (San Diego FC), open play, 0.08 xG, off target 64’ Marcus Ingvartsen (San Diego FC), open play, 0.07 xG, blocked 76’ Ariel Lassiter (Portland Timbers), open play, 0.07 xG, off target 7’ Marcus Ingvartsen (San Diego FC), open play, 0.07 xG, off target 36’ Marcus Ingvartsen (San Diego FC), open play, 0.06 xG, blocked 24’ Gabriel Pirani (San Diego FC), open play, 0.06 xG, blocked 65’ Manu Duah (San Diego FC), from a corner, 0.06 xG, blocked 9’ Kevin Kelsy (Portland Timbers), set piece, 0.05 xG, off target 64’ Marcus Ingvartsen (San Diego FC), from a corner, 0.05 xG, saved 73’ Alejandro Alvarado Jr (San Diego FC), open play, 0.06 xG, blocked 15’ Lewis Morgan (San Diego FC), open play, 0.04 xG, blocked 5’ Gabriel Pirani (San Diego FC), open play, 0.04 xG, saved 48’ Kristoffer Velde (Portland Timbers), open play, 0.03 xG, off target 68’ David Pereira Da Costa (Portland Timbers), open play, 0.03 xG, goal 86’ Alejandro Alvarado Jr (San Diego FC), from a corner, 0.04 xG, off target 49’ Gabriel Pirani (San Diego FC), open play, 0.03 xG, saved 90+3’ Lewis Morgan (San Diego FC), open play, 0.03 xG, off target 29’ Kristoffer Velde (Portland Timbers), open play, 0.02 xG, goal 20’ David Pereira Da Costa (Portland Timbers), set piece, 0.02 xG, blocked 58’ Ariel Lassiter (Portland Timbers), open play, 0.02 xG, saved 77’ Elias Achouri (San Diego FC), open play, 0.02 xG, blocked 11’ Lewis Morgan (San Diego FC), open play, 0.02 xG, saved 16’ Gabriel Pirani (San Diego FC), open play, 0.02 xG, blocked 55’ Cole Bassett (Portland Timbers), open play, 0.02 xG, hit the woodwork 51’ Ariel Lassiter (Portland Timbers), open play, 0.69 xG, goal 56’ Kevin Kelsy (Portland Timbers), open play, 0.41 xG, off target 31’ Kevin Kelsy (Portland Timbers), open play, 0.23 xG, saved 76’ Oscar Verhoeven (San Diego FC), open play, 0.19 xG, saved 82’ Elias Achouri (San Diego FC), open play, 0.14 xG, off target 81’ Gabriel Pirani (San Diego FC), open play, 0.13 xG, blocked 39’ Jeppe Tverskov (San Diego FC), open play, 0.10 xG, off target 46’ Gabriel Pirani (San Diego FC), open play, 0.10 xG, goal 43’ Gabriel Pirani (San Diego FC), open play, 0.08 xG, off target 76’ Ariel Lassiter (Portland Timbers), open play, 0.07 xG, off target 7’ Marcus Ingvartsen (San Diego FC), open play, 0.07 xG, off target 64’ Marcus Ingvartsen (San Diego FC), open play, 0.07 xG, blocked 36’ Marcus Ingvartsen (San Diego FC), open play, 0.06 xG, blocked 24’ Gabriel Pirani (San Diego FC), open play, 0.06 xG, blocked 65’ Manu Duah (San Diego FC), from a corner, 0.06 xG, blocked 9’ Kevin Kelsy (Portland Timbers), set piece, 0.05 xG, off target 64’ Marcus Ingvartsen (San Diego FC), from a corner, 0.05 xG, saved 73’ Alejandro Alvarado Jr (San Diego FC), open play, 0.06 xG, blocked 15’ Lewis Morgan (San Diego FC), open play, 0.04 xG, blocked 5’ Gabriel Pirani (San Diego FC), open play, 0.04 xG, saved 48’ Kristoffer Velde (Portland Timbers), open play, 0.03 xG, off target 68’ David Pereira Da Costa (Portland Timbers), open play, 0.03 xG, goal 86’ Alejandro Alvarado Jr (San Diego FC), from a corner, 0.04 xG, off target 49’ Gabriel Pirani (San Diego FC), open play, 0.03 xG, saved 90+3’ Lewis Morgan (San Diego FC), open play, 0.03 xG, off target 29’ Kristoffer Velde (Portland Timbers), open play, 0.02 xG, goal 20’ David Pereira Da Costa (Portland Timbers), set piece, 0.02 xG, blocked 55’ Cole Bassett (Portland Timbers), open play, 0.02 xG, hit the woodwork 58’ Ariel Lassiter (Portland Timbers), open play, 0.02 xG, saved 77’ Elias Achouri (San Diego FC), open play, 0.02 xG, blocked 11’ Lewis Morgan (San Diego FC), open play, 0.02 xG, saved 16’ Gabriel Pirani (San Diego FC), open play, 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

Portland Timbers 4-2-3-1 Starting XI
Pantemis
Fory
Surman
Miller
Bye 62’
Caicedo
Bassett 74’
Lassiter 83’
Velde 74’
Costa 83’
Kelsy
San Diego FC 4-3-3 Starting XI
Santos
Sargeant 74’
Duah
Murphy
Þórhallsson 74’
Valakari 58’
Tverskov
Pirani
Mighten 59’
Ingvartsen 74’
Morgan

Player stats

Goalkeeper1 player
90′ 5 1 27 1 – – – –
Defenders5 players
Brandon Bye Taken off
62′ 1 1 – 2 1 23 – – – –
90′ 2 2 3 3 1 27 – – – –
90′ 2 1 2 3 1 45 1 – – –
90′ 4 2 – 5 – 24 3 – 1 –
Eric Miller Came on as a substitute
28′ – – – – – 9 – – – –
Midfielders8 players
Cole Bassett Taken off
74′ – 1 35 2 0.02 1 – 1 – – –
90′ – – 37 – 0.00 1 3 6 1 2 –
Ariel Lassiter Taken off
83′ 1 – 18 1 0.01 1 1 3 2 1
David Pereira Da Costa Taken off
83′ 1 – 24 – 0.02 – – 1 1 – –
Kristoffer Velde Taken off
74′ 1 1 17 3 0.17 2 – 8 3 1 –
Antony Alves Came on as a substitute
16′ – – 2 – 0.00 – – 3 – 1 –
Joao Ortíz Came on as a substitute
16′ – – 5 – 0.00 – 1 3 – 2 –
Diego Chará Came on as a substitute
14′ – – 2 – 0.00 1 – 1 1 – –
Forwards2 players
90′ – – 3 1 0.69 0.01 2 4 1 24
Vincent Janssen Came on as a substitute
14′ – – – – – 0.00 – 1 1 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.

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.