The Croatian stunned the 20-time Grand Slam champion 6-4, 6-4 in what was an unusually error-strewn performance from Federer.
Coric beat Federer in the Halle final in their last meeting earlier this year.
Three-time Shanghai Open victor Djokovic stormed past German Alexander Zverev 6-2 6-1 in Saturday's earlier semi and claimed the world number two ranking from Federer.
Serving for the win at 5-4, Borna landed four winners to seal the deal in the strong fashion and celebrate one of his most impressive wins ever.
The 37-year-old top seed was more like his old self on Friday, defeating eighth seed Kei Nishikori in two high-quality sets.
Djokovic saved set point in the opener before taking control of the tie break and the second set to dump out the South African seventh seed.
There was a subtle shake of the head when Federer similarly lost his serve at the start of the second set.
If I was forced to recommend a bet tomorrow, this would be it, but naturally it's hard to advocate a bet which I think is pretty accurately priced, so there are no recommendations for Saturday's semi-finals. "He served better", said Federer, proclaiming himself pleased overall with his form.
"I wasn't - I feel like - playing as well as I'm playing today", he warned. "He's good in defense now, he has a transition game now, and a solid serve".
Israeli forces kill at least six Palestinians in Gaza
They also seek the right to return to lands that Palestinians fled or were driven from upon Israel's founding in 1948. Israel said its troops had shot a group who broke through the fence with a bomb and attacked an army post.
"I don't think I played a match where I didn't get broken, so that's something a bit more unusual for me".
Federer has won three titles this year - the Australian Open, Rotterdam, Stuttgart - but all of them were earned before the start of Wimbledon in July.
That run includes titles at the US Open and Cincinnati Masters. Coric, world-ranked 19th, will face one of his toughest tests of the season against Djokovic in Sunday's showpiece.
"He served better. I think that's it", said Federer. His first two matches both went three sets.
Celebrating his 1,000th match in style, the 14-time Grand Slam victor Djokovic was clinical against a shell-shocked Zverev.
Interestingly, though, that match did have very close data - Federer had eight break points on return, compared to six for Nishikori - while only winning 52% of points in the match, a very low figure for a straight-set victory.
He is desperate to take injured Rafael Nadal's number one spot before the year is out, and on this evidence, he will.
Djokovic, who has won the last two Grand Slams, at Wimbledon and the U.S. Open, is now world number three, but could move up a spot if he books a place in Sunday's final.