Ben Shelton has defeated compatriot Frances Tiafoe 4-6 6-3 6-3 7-5 in an electric US Open semifinal to secure a title clash with Alexander Zverev and move closer to ending a 23-year American wait for a men's singles Grand Slam champion.

On a poignant evening that began with commemorations marking the 25th anniversary of the September 11 attacks, Tiafoe powered ahead 5-4 when Shelton produced a double fault, before raising the roof on the main showcourt with a hold to bag the first set on Friday. 

Tiafoe continued to target his opponent's relatively weaker backhand in the second set but Shelton dialled up the intensity to draw level and broke in the fifth game of the third set to take a commanding lead in the match.

Ben Shelton celebrates after beating US compatriot Frances Tiafoe. Photo: Reuters

With his booming left-handed serve and his defence proving impenetrable in the high-octane fourth set, eighth seed Shelton heaped the pressure on late and moved into his maiden major title clash.

Earlier, Zverev beat Karen Khachanov 6-3 7-6(7) 7-6(6) to move a step closer to a second Grand Slam title.

The French Open champion had been pushed to five sets in each of his opening two rounds but has now won four straight matches without dropping a set, as he reached his third consecutive major final.

The victory also sends him to his second title decider at Flushing Meadows, after finishing runner-up in 2020 to Dominic Thiem.

"After the second round at 3am, me and my team were in the dressing room actually laughing at how bad I was playing. That sense of humour helped me," the 29-year-old Zverev said on court. "I have improved a little bit, otherwise I wouldn’t be in the US Open final."

Zverev struck first to take the opening set before carrying that momentum into the second with an early break.

Khachanov, however, found his range and broke back, ending Zverev's run of 37 consecutive service games without being broken. The unseeded Russian then threatened to swing the match in a gripping tiebreak.

The German held his nerve to close it out after a 14-minute breaker, aided by Khachanov's errors at the crucial moments.

The third set followed a similar pattern, with Khachanov taking a brief lead in the tiebreak before Zverev again fought back to seal his seventh win in 10 meetings against the Russian.

"I can't wait for Sunday. It's going to be incredibly special”, the German said.