Portland Timbers rally twice to beat Charlotte FC 3-2 on Bassett's stoppage-time header
Despite falling behind twice, Portland Timbers dominated with 26 shots and sealed the win on a Cole Bassett header in the 95th minute.

It took just two minutes for Providence Park to go quiet. Pep Biel curled a left-footed strike from outside the box that found the corner of the net for Charlotte FC's 0-1 lead. But what looked like the start of an uncomfortable night for the home side turned into the opposite. Portland Timbers answered with an offensive showcase, and in stoppage time of the second half, they sealed the 3-2 that decided one of those matches settled in the final breath.
The equalizer came quickly. In the 10th minute, Ariel Lassiter finished with his left foot from the center of the box, set up by Eric Izoita, to make it 1-1. Portland took control of the match and showed it on the scoreboard before halftime, when Lassiter struck again, this time from the right side of the box, netting his second goal of the night to put Portland up 2-1 at the break.
In the second half, Charlotte FC refused to fold. Idan Toklomati, who had already tested the home goalkeeper with a header saved near the six-yard box, found the equalizer in the 68th minute with a point-blank right-footed shot that found the top left corner, set up by a cross from Luca de la Torre, who had just come on as a substitute. The 2-2 left everything open for a nail-biting finish.
And the finish came deep into stoppage time. In the 95th minute, off a corner kick, Ian Smith delivered a cross into the box that Cole Bassett, also with a point-blank header, sent into the top left corner to seal the final 3-2. Providence Park erupted on the goal that gave Portland Timbers, coached by Marti Cifuentes, all three points in the last possible minute.
A dominance reflected in the numbers
Beyond the tight final score, the difference in control of the match was notable. Portland Timbers controlled possession and far outpaced their opponent in scoring chances, something the match stats confirm clearly.
| Statistic | Portland Timbers | Charlotte FC |
|---|---|---|
| Possession (%) | 55.8 | 44.2 |
| Shots | 26 | 6 |
| Shots on target | 12 | 3 |
| Big chances | 1 | 1 |
| Corners | 9 | 3 |
| Passes | 569 | 459 |
| Fouls committed | 10 | 9 |
With 26 shots to just 6 for Charlotte FC, the home side's dominance in volume of play was overwhelming, even though the scoreline stayed tight until the end. That gap also shows up in the match's estimated xG. According to our post-match calculation based on shot location, Portland Timbers generated 2.871 expected goals to just 0.962 for Charlotte FC, a gap that confirms the home side pressed far more than the final result suggested for much of the game.
What the preview said
Before kickoff, our projection gave Charlotte FC a 41% chance of winning, with 34% for Portland Timbers and 25% for a draw, with a total expected goals count of 3.32 (1.58 for the home side and 1.74 for the visitors). The result ran counter to that forecast: the team given fewer odds by our model walked away with all three points, and did so while well exceeding the goal total we projected for it.
What the match leaves behind
In the Eastern Conference table, Charlotte FC enters this match in fifth place with 47 points, the product of 13 wins, 8 draws and 10 losses in 31 games played. The road loss ends a night in which Charlotte twice took the lead but couldn't hold it. For Portland Timbers, the result is a victory built on persistence: two goals from Ariel Lassiter, a late equalizer that nearly derailed the night, and finally Cole Bassett's stoppage-time goal that turned dominance into three points.
GAM
BUR
ANT
POH
HOL
CZO
SAG
KWF
FMA
SFR
NGO
URA
K36
ANT
LEG
CHE
ROM
FCB
RMA
SER
OHL
ASL
SLB
OL
INT
CLT
MTL
MIA
CIN
NE
RBNY
NYC
ATL
TOR
DC
ATX
RSL
CHI
ORL
DAL
CLB
MIN
SKC
NSH
PHI
STL
POR
SJ
COL
SEA
HOU
VAN
SDG
CFA
CTJ
MIL
BOL
PAR
UDI
VEN
INT
GEN
JUV
MON
NAP
ZAM
ANA
ALA
HUE
ADC
PGL
RUN
SAB
EIB