Katie O'Kane's Brace Powers Racing Louisville Past Portland Thorns 3-1
Katie O'Kane scored twice, including a 77th-minute free kick, and Emma Sears added a stoppage-time goal as Racing Louisville beat the Portland Thorns 3-1.

Katie O'Kane walked into Lynn Family Stadium on Friday night with one career goal to her name, according to Racing Louisville. She walked out with three, a free kick worth framing and a scalp the club's own recap described as the league leaders.
O'Kane scored twice, Emma Sears came off the bench to bury a stoppage-time dagger, and Racing Louisville beat the Portland Thorns 3-1 in front of 5,356 fans. Sophia Wilson had Portland ahead in the sixth minute, but the Thorns never scored again, and their five-match unbeaten run went down with them.
Wilson Strikes, Racing Swarms
Portland opened like a team that expected to win. Olivia Moultrie slipped a through ball to Wilson, and Wilson finished left-footed from the center of the box into the bottom left corner. Two minutes later she nearly doubled the lead on a fast break started by Reilyn Turner, missing just wide.
Then Racing turned up the volume. O'Kane missed off a Lauren Milliet cross in the ninth minute, Makenna Morris had a shot blocked a minute later, and Mackenzie Arnold had to dive to keep out an O'Kane drive from outside the box in the 11th. Courtney Petersen fired over off a corner, Milliet missed from the center of the box, and then, in the 14th minute, O'Kane finally broke through, finishing from the center of the box off a Milliet assist. Racing described it as a scramble. Nobody in the home end cared.
The rest of the half was a genuine back-and-forth. Wilson missed narrowly in the 40th minute, Moultrie fired wide from the center of the box two minutes later, and Wilson sent another effort over the bar in the 44th. Racing answered with blocked shots from O'Kane, Arin Wright and Kayla Fischer late in the half. It was 1-1 at the break, and it felt like a coin flip.
Racing Finds Its Old Self
Portland coach Robert Vilahamn sent Mimi Alidou on for Turner at halftime. Arnold denied Sarah Weber in the 47th minute, and Alidou forced Jordyn Bloomer into a save at the other end in the 55th. Racing head coach Bev Yanez sent on Sears for Morris in the 61st minute, and according to Racing, it was the first time all season Sears had come off the bench.
The club's recap credited the high press for the second-half surge, and the numbers back up the vibe: Racing finished with 20 shots to Portland's 14 and 21 crosses to Portland's three. Yanez had preached a "Back to basics" week after two straight road defeats, and her team played like it had studied the old tape.
Star Turn: O'Kane
O'Kane took seven shots, put three on target and scored twice. According to Racing, the equalizer was her second career goal, the free kick was her third, and together they made up the first brace of her career. She also set up three of her teammates' shots, a busy night by any standard.
Bloomer deserves a slice of the credit. She made three saves, two of them on Moultrie, including a stop in the top left corner in the 74th minute that kept the score level three minutes before the go-ahead goal.
For Portland, Wilson had seven shots and the opener, her third goal of the season and, per the Thorns, the earliest goal Portland had scored all year. Moultrie had five shots and her fourth assist, which the Thorns say was the most on the team and tied for the most in the NWSL.
The Foul That Cost Portland
The decisive sequence started in the 75th minute, when Thorns captain Sam Hiatt fouled Ella Hase on the left wing and picked up a yellow card for it. O'Kane stood over the ball and whipped a right-footed free kick into the top right corner in the 77th minute, beyond Arnold's reach.
Per the club, O'Kane said goalkeeper coach Serge Gonzalez had told her at halftime to shoot if she got another look like those. "So I did," she said. Simple as that.
Portland pushed for an equalizer. Wilson cleared the bar a minute later, and Bloomer saved Moultrie again in the fourth minute of stoppage time. Two minutes after that, Sears beat Arnold with a right-footed shot from outside the box into the bottom left corner. Lights out.
Quincy McMahon, making her third start for Racing, summed up the week. "This whole week, we talked again and again about getting back to who we were," she said. "The work rate, the mentality, the finishes, all of that, just emulated who we want to be and all we've worked on."
By the Numbers, Racing Earned It
- Shots: Racing 20, Portland 14, with Racing holding a 5-4 edge in shots on target.
- Crosses: Racing 21, Portland 3. Louisville lived in the wide areas all night.
- Corners: Racing 5, Portland 1.
- Saves: Bloomer made three, Arnold two.
- Possession: Portland had 52.3 percent of the ball and 419 passes to Racing's 363, and it barely mattered.
Racing Exhales, Portland Regroups
Racing improves to 2-1-5 with seven points, snapping a two-game skid that included 1-0 road losses at the Washington Spirit and Gotham FC. Both of Racing's wins have come at home, and the club says it is unbeaten in three home games this year. Next up is a trip to face the Utah Royals on May 17.
Portland falls to 6-1-2 and stays on 19 points. The Thorns had beaten the Chicago Stars 2-0 five days earlier, and this was their first loss since a 3-1 defeat at San Diego in March. They return to Providence Park on Sunday, May 17, to host Angel City FC, where the Thorns say they are perfect at home this year with three wins and three shutouts.
Back to the Future, Louisville Style
Yanez framed the week as a reset, not a reinvention. "We can't change the past, but what we can change is our direction moving forward," she said, per the club. "It isn't anything that's different for us, it's just getting back to us." Call it Back to the Future without the DeLorean: Racing went looking for its old identity and found a 3-1 win over one of the hottest teams in the league waiting there.
Stats from ESPN's match data. Postgame quotes and club notes as reported by Racing Louisville FC; additional notes from the Portland Thorns.
Related Coverage

Thorns vs. Dash Preview: Sophia Wilson Is Eligible Again as Kat Rader Chases Rookie History
November 1, 2026

Current vs. Racing Louisville Preview: A Road Win Guarantees Kansas City a Home Playoff Game
November 1, 2026

Thorns Head to Houston for Decision Day With Their Playoff Seed Still Unsettled
October 30, 2026

More From Editor
View All stories by Editor
Avalanche vs. Flames: Artturi Lehkonen Scores Twice as Cale Makar Piles Up Four Assists in 5-2 Win
November 1, 2026

Jonathan Bamba Scores Twice, Lewandowski Delivers Off the Bench as Chicago Fire Beat Rapids 4-2
November 1, 2026

Stars vs. Blue Jackets: Thomas Harley and Arttu Hyry Beat the Buzzer Twice as Dallas Snaps Its Skid
November 1, 2026
