San Jose Earthquakes vs Portland Timbers

4 May 2025 · MLS · 2025 · Referee Fotis Bazakos

Full time 4 – 1

Half-time: 3–1

  • Cristian Espinoza 16’, 24’
  • Cristian Arango 27’
  • Ousseni Bouda 88’
  • Felipe Mora 42’

Match summary

San Jose Earthquakes won comfortably, 4-1 at home to Portland Timbers. San Jose Earthquakes led 3-1 at half-time.

In the first half, Cristian Espinoza put San Jose Earthquakes ahead in the 16th minute, Espinoza made it 2-0 in the 24th minute, Cristian Arango made it 3-0 in the 27th minute, and Felipe Mora pulled one back to make it 3-1 in the 42nd minute. In the second half, Ousseni Bouda made it 4-1 in the 88th minute.

The chances backed that up: San Jose Earthquakes created 2.22 expected goals (xG) from 15 shots to Portland Timbers's 1.85 from 17.

Match stats

44% Possession 56%
15 Shots 17
8 Shots on target 5
2 Corners 6
415 Passes 525
76.9% Pass accuracy 80.6%
15 Tackles 13
14 Fouls 9
4 Yellow cards 1
3 Offsides 3

Key events

San Jose Earthquakes Portland Timbers
Kick-off
Cristian ArangoShot on target
11’
Cristian EspinozaRight foot shot1-0 (San Jose Earthquakes)
16’
Cristian EspinozaRight foot shot2-0 (San Jose Earthquakes)
24’
26’
David Pereira Da CostaShot on target
Cristian ArangoRight foot shot3-0 (San Jose Earthquakes)
27’
Ian HarkesShot on target
33’
38’
40’
42’
Felipe MoraRight foot shot3-1 (Portland Timbers)
Half-time3-1
Second half underway
49’
Antony AlvesShot on target
51’
Claudio BravoShot on target
55’
Cristian ArangoVAR: Goal given
60’
66’
Cristhian ParedesJoao Ortíz
Cristian ArangoShot on target
68’
Cristian ArangoVAR: Penalty given
70’
76’
Felipe MoraShot on target
77’
Omir FernandezClaudio Bravo
Mark-Anthony KayeIan Harkes
82’
Ousseni BoudaRight foot shot4-1 (San Jose Earthquakes)
88’
90+2’
90+3’
90+4’
Cristian ArangoShot on target
90+5’
Full-time4-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 2.5 3.0 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 2.22 1.85 16’ Cristian Espinoza (San Jose Earthquakes), 1-0 16’ 24’ Cristian Espinoza (San Jose Earthquakes), 2-0 24’ 27’ Cristian Arango (San Jose Earthquakes), 3-0 27’ 42’ Felipe Mora (Portland Timbers), 3-1 42’ 88’ Ousseni Bouda (San Jose Earthquakes), 4-1 88’ 0.0 0.5 1.0 1.5 2.0 2.5 3.0 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 2.22 1.85 16’ Cristian Espinoza (San Jose Earthquakes), 1-0 Espinoza 16’ 24’ Cristian Espinoza (San Jose Earthquakes), 2-0 Espinoza 24’ 27’ Cristian Arango (San Jose Earthquakes), 3-0 Arango 27’ 42’ Felipe Mora (Portland Timbers), 3-1 Mora 42’ 88’ Ousseni Bouda (San Jose Earthquakes), 4-1 Bouda 88’
San Jose Earthquakes 2.22 xGPortland Timbers 1.85 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 Portland Timbers attacking San Jose Earthquakes attacking 
68’ Cristian Arango (San Jose Earthquakes), open play, 0.48 xG, saved 88’ Ousseni Bouda (San Jose Earthquakes), open play, 0.36 xG, goal 6’ Felipe Mora (Portland Timbers), open play, 0.25 xG, blocked 67’ David Pereira Da Costa (Portland Timbers), open play, 0.25 xG, off target 42’ Felipe Mora (Portland Timbers), open play, 0.22 xG, goal 65’ Finn Surman (Portland Timbers), from a corner, 0.20 xG, off target 16’ Cristian Espinoza (San Jose Earthquakes), open play, 0.19 xG, goal 24’ Cristian Espinoza (San Jose Earthquakes), open play, 0.19 xG, goal 27’ Cristian Arango (San Jose Earthquakes), open play, 0.16 xG, goal 33’ Ian Harkes (San Jose Earthquakes), open play, 0.15 xG, saved 6’ Felipe Mora (Portland Timbers), open play, 0.14 xG, blocked 12’ Cristian Espinoza (San Jose Earthquakes), open play, 0.14 xG, off target 22’ Antony Alves (Portland Timbers), open play, 0.14 xG, off target 84’ Felipe Mora (Portland Timbers), open play, 0.14 xG, off target 90’ Ousseni Bouda (San Jose Earthquakes), open play, 0.14 xG, blocked 26’ David Pereira Da Costa (Portland Timbers), open play, 0.13 xG, saved 11’ Cristian Arango (San Jose Earthquakes), open play, 0.12 xG, saved 56’ David Ayala (Portland Timbers), set piece, 0.10 xG, hit the woodwork 90+5’ Cristian Arango (San Jose Earthquakes), open play, 0.10 xG, saved 81’ David Pereira Da Costa (Portland Timbers), direct free kick, 0.09 xG, blocked 44’ Ian Harkes (San Jose Earthquakes), open play, 0.08 xG, off target 51’ Claudio Bravo (Portland Timbers), open play, 0.04 xG, saved 76’ Felipe Mora (Portland Timbers), from a corner, 0.04 xG, saved 85’ Vitor Costa (San Jose Earthquakes), open play, 0.05 xG, off target 66’ Cristian Espinoza (San Jose Earthquakes), open play, 0.04 xG, off target 83’ Kevin Kelsy (Portland Timbers), open play, 0.03 xG, off target 14’ Daniel Munie (San Jose Earthquakes), from a corner, 0.02 xG, off target 18’ David Ayala (Portland Timbers), open play, 0.02 xG, off target 8’ Santiago Moreno (Portland Timbers), open play, 0.02 xG, off target 49’ Antony Alves (Portland Timbers), open play, 0.01 xG, saved 76’ Cristhian Paredes (Portland Timbers), from a corner, 0.02 xG, off target 6’ Cristian Arango (San Jose Earthquakes), open play, 0.00 xG, off target 68’ Cristian Arango (San Jose Earthquakes), open play, 0.48 xG, saved 88’ Ousseni Bouda (San Jose Earthquakes), open play, 0.36 xG, goal 6’ Felipe Mora (Portland Timbers), open play, 0.25 xG, blocked 67’ David Pereira Da Costa (Portland Timbers), open play, 0.25 xG, off target 42’ Felipe Mora (Portland Timbers), open play, 0.22 xG, goal 65’ Finn Surman (Portland Timbers), from a corner, 0.20 xG, off target 16’ Cristian Espinoza (San Jose Earthquakes), open play, 0.19 xG, goal 24’ Cristian Espinoza (San Jose Earthquakes), open play, 0.19 xG, goal 27’ Cristian Arango (San Jose Earthquakes), open play, 0.16 xG, goal 33’ Ian Harkes (San Jose Earthquakes), open play, 0.15 xG, saved 6’ Felipe Mora (Portland Timbers), open play, 0.14 xG, blocked 12’ Cristian Espinoza (San Jose Earthquakes), open play, 0.14 xG, off target 22’ Antony Alves (Portland Timbers), open play, 0.14 xG, off target 84’ Felipe Mora (Portland Timbers), open play, 0.14 xG, off target 90’ Ousseni Bouda (San Jose Earthquakes), open play, 0.14 xG, blocked 26’ David Pereira Da Costa (Portland Timbers), open play, 0.13 xG, saved 11’ Cristian Arango (San Jose Earthquakes), open play, 0.12 xG, saved 56’ David Ayala (Portland Timbers), set piece, 0.10 xG, hit the woodwork 90+5’ Cristian Arango (San Jose Earthquakes), open play, 0.10 xG, saved 81’ David Pereira Da Costa (Portland Timbers), direct free kick, 0.09 xG, blocked 44’ Ian Harkes (San Jose Earthquakes), open play, 0.08 xG, off target 85’ Vitor Costa (San Jose Earthquakes), open play, 0.05 xG, off target 51’ Claudio Bravo (Portland Timbers), open play, 0.04 xG, saved 76’ Felipe Mora (Portland Timbers), from a corner, 0.04 xG, saved 66’ Cristian Espinoza (San Jose Earthquakes), open play, 0.04 xG, off target 83’ Kevin Kelsy (Portland Timbers), open play, 0.03 xG, off target 14’ Daniel Munie (San Jose Earthquakes), from a corner, 0.02 xG, off target 18’ David Ayala (Portland Timbers), open play, 0.02 xG, off target 8’ Santiago Moreno (Portland Timbers), open play, 0.02 xG, off target 76’ Cristhian Paredes (Portland Timbers), from a corner, 0.02 xG, off target 49’ Antony Alves (Portland Timbers), open play, 0.01 xG, saved 6’ Cristian Arango (San Jose Earthquakes), open play, 0.00 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

San Jose Earthquakes 3-4-2-1 Starting XI
Daniel
Floriani 72’
Munie
Romney
Jones
Costa
Harkes 82’
Leroux 90’
Espinoza 2
Bouda
Arango
Portland Timbers 4-2-3-1 Starting XI
Crépeau
Bravo 77’
Surman
Miller
Mosquera 82’
Ortíz 66’
Ayala 76’
Alves
Costa
Moreno 77’
Mora

Player stats

Goalkeeper1 player
Daniel
90′ 4 1 30 – – – – –
Defenders6 players
Max Floriani Taken off
72′ – 2 – 1 1 37 – – – –
90′ 1 – – 4 3 45 2 – – –
90′ 1 – – 3 2 35 2 – – –
90′ 1 2 – 5 – 48 1 – 2 –
90′ 2 – – 2 – 41 2 – – –
Rodrigues Came on as a substitute
18′ 2 – – 3 – 8 2 – – –
Midfielders5 players
Ian Harkes Taken off
82′ – – 36 – 0.01 3 1 7 1 1 –
Beau Leroux Taken off
89′ – – 37 – 0.01 3 2 4 1 – –
90′ 2 – 42 3 0.20 – – 5 2 2 –
90′ 1 1 27 4 0.07 1 1 3 1 1 –
Mark-Anthony Kaye Came on as a substitute
8′ – – 5 – 0.00 – 1 – – – –
Forwards1 player
Cristian Arango
90′ 1 1 5 4 0.87 0.61 2 6 2 22 –
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. Referee data before 2025/26 from the Transfermarkt datasets project.