PORTLAND, Ore.
- Fadi Afash scored a late goal to lift the Portland Timbers to a 1-0 victory over the Charleston Battery before 4,546 Thursday night at PGE Park.
With the match headed for a 0-0 draw, Portland pressed forward and Edwin Miranda cracked a shot off Charleston goalkeeper Chris Doyle. Byron Alvarez took the rebound and headed it off the ‘keeper and into the path of Afash, who sliced the ball into the right side of the net for the 89th minute victory.
Portland goalkeeper Josh Saunders turned in his second clean sheet of the season, accruing six saves while facing eight shots in the shutout win. Saunders has collected 21 saves in his last three matches.
The victory bumps Portland into second place in the USL First Division table and pushes its regular-season unbeaten streak to 15, dating back to 2004.
Portland dominated possession in the first half by playing an efficient, one-touch game and out-shooting Charleston 5-1.
The Timbers’ best opportunity in the early going arrived when Aaran Lines played a ball inside to Dan Antoniuk, who spun it just right of target in the 10th minute. Antoniuk created another chance in the 24th, but his header sailed high over the crossbar.
Charleston stepped it up offensively in the second half, reeling off seven shots and applying increased pressure to the Portland back line, but could not find the back of the net.
Saunders brought the PGE Park crowd to its feet in the 58th when he made two spectacular windmill saves in a one-on-one against Thabiso Khumalo, but the effort was waved off with Khumalo being ruled offside.
The Timbers will take a 16-day break in action before returning to PGE Park on Saturday, May 28 to take on the Virginia Beach Mariners. Kickoff is 7 p.m. (Pacific).
TIMBERS NOTES:
Several fans from the days of the NASL Timbers presented Timber Jim with a commemorative axe prior to kickoff … Thursday’s match was broadcast live on Comcast CNW 14 in the Portland area … the Timbers’ next game against Virginia Beach is the last at PGE Park until June 16 … the Timbers defeated Charleston 2-1 last season, also in the final minutes, with a penalty kick in the 90th at Blackbaud Stadium.
SCORING SUMMARY:
Afash, 89’ (UA).
MISCONDUCT SUMMARY:
CHR Khumalo, YC (72’), Woods, YC (90’); POR Miranda, YC (19’), S. Saunders, YC (39’).
LINEUPS:
CHARLESTON (1-2-2) Doyle GK, Kutney D, Karalexis D, Woods D, Chronopoulos M, Smith M, Evans M, Alavanja M, Goos M, Simmonds F (Vasquez 73’), Khumalo F (Martinez 85’); PORTLAND (3-0-2) J. Saunders GK, S. Saunders D, Wilkinson D (Morrison 84’), Thompson D, Heinzen D, Alcaraz-Cuellar M, Winters M, Lines M, Miranda M, Antoniuk F (Afash 85’), Alvarez F.
Timbers strike when it counts, defeat Charleston 1-0

Crossbody bag, patches and Civic the Goose | Check out upcoming special match giveaways and promotions
From special edition patches to to limited edition scarves to theme nights and cultural celebrations, learn more about all the exciting matches coming to Providence Park.

Leagues Cup 2026 comes to Portland
Liga MX giants Club Puebla, Club América and Club Tijuana come to Providence Park in August!
-
Timbers Academy's Kellen Tamblyn starts in 2026 MLS NEXT All-Star Game
-
Timbers forward Felipe Mora named to MLS Team of the Matchday
-
7:20
"[Mora's] a special person and a special player" | Diego Chara reflects on Mora, win over RSL
-
15:55
"I'm always going to be grateful, I always felt the love here" | Mora on his time with Portland
-
7:25
"[The team] has stepped up to every challenge" | Jack Cassidy on the win over RSL
-
10:32
HIGHLIGHTS | Portland Timbers vs. Real Salt Lake | July 25, 2026
-
RECAP | Felipe Mora plays the hero in final club appearance as Timbers beat Real Salt Lake 2-1