San Diego came to Providence Park with all the possession they could handle, dominating the ball and forcing Portland into a defensive shell. Yet the hosts matched their visitors' intensity where it mattered most, weathering a relentless first half that saw the guests rack up seven corners and twenty-one total shots. It finished level at the break, but Portland turned the screw after the interval. Kristoffer Velde was absolutely immense down the wing, terrorizing San Diego's backline and turning the game on its head as the Timbers pulled away for a 3-1 victory. The scale of Portland's second-half dominance told the real story. San Diego couldn't replicate their first-half control and found themselves picked apart on the counter. Velde's tireless running and decision-making earned him man of the match honors, and his performance proved that football isn't won on possession alone. The Timbers needed this one badly, and they got it when it counted.
The Matchup
Portland Timbers 3-1 San Diego FC was the final score at Providence Park, in a game where Portland Timbers did enough across the ninety minutes to deserve the three points. Portland Timbers also had the better share of the ball, holding 30% possession, which usually goes hand in hand with the extra control a winning side tends to show. The shot count told a similar story, with 11 attempts from Portland Timbers against 21 from San Diego FC over the course of the game. It was not always comfortable for Portland Timbers, and San Diego FC pushed for a way back into the game, but the result stood. Games like this can carry real weight later in the season, so this is a scoreline worth remembering. Below is a closer look at how the match broke down, statistically.
Man of the Match
Match Statistics
Match Events
| Min | Team | Card | Event | Score |
|---|---|---|---|---|
| 17' | Portland Timbers | Ariel Lassiter | 0-0 | |
| 29' | Portland Timbers | Goal — K. Velde (assist: C. Bassett) | 1-0 | |
| 45' | San Diego FC | Goal — Gabriel Pirani (assist: L. Morgan) | 1-1 | |
| 51' | Portland Timbers | Goal — A. Lassiter (assist: J. Fory) | 2-1 | |
| 58' | San Diego FC | Substitution — O. Valakari on, A. Alvarado Jr off | 2-1 | |
| 59' | San Diego FC | Substitution — A. Mighten on, E. Achouri off | 2-1 | |
| 62' | Portland Timbers | Substitution — B. Bye on, E. Miller off | 2-1 | |
| 68' | Portland Timbers | Goal — D. Da Costa (assist: K. Velde) | 3-1 | |
| 74' | Portland Timbers | Substitution — C. Bassett on, J. Ortiz off | 3-1 | |
| 74' | Portland Timbers | Substitution — K. Velde on, Antony off | 3-1 | |
| 74' | San Diego FC | Substitution — K. Sargeant on, L. Bombino off | 3-1 | |
| 74' | San Diego FC | Substitution — D. Thorhallsson on, O. Verhoeven off | 3-1 | |
| 74' | San Diego FC | Substitution — M. Ingvartsen on, A. Pellegrino off | 3-1 | |
| 83' | Portland Timbers | Substitution — D. Da Costa on, D. Chara off | 3-1 | |
| 83' | Portland Timbers | Substitution — A. Lassiter on, V. Janssen off | 3-1 | |
| 90+6' | Portland Timbers | Kevin Kelsy | 3-1 | |
| 90+1' | San Diego FC | Oscar Verhoeven | 3-1 |
Portland Timbers vs San Diego FC Lineups
Looking Ahead
Portland Timbers have a quick chance to build on this result. Their next test comes at home to Austin FC, and how they respond after this result will be worth watching. You can follow the build-up and everything you need to know when Portland Timbers vs Austin FC going to play at 30 August 2026 in Major League Soccer 2026.
San Diego FC, meanwhile, does not have long to wait before getting back out onto the pitch. They are next in action at home to LA Galaxy, a game that will give an early sense of how they carry this result forward. Full details are here: San Diego FC vs LA Galaxy going to play at 30 August 2026 in Major League Soccer 2026.