Defending champion and No.1 seed Federer was beaten by Coric in the final of the Gerry Weber Open in June, and had no answer to his emerging rival once again in their semi-final encounter in China, losing 6-4 6-4 in just 73 minutes.
The Croatian will face Novak Djokovic in the final, with Federer already knowing prior to this defeat that he would lose the world No.2 ranking to the Serbian, who has now won 17 consecutive matches after thrashing Alexander Zverev in the other last-four tie.
Coric did not have to face a single break point across the whole match as his ruthless serving and an uncharacteristically sloppy display from Federer, who had 24 unforced errors, made the difference.
The No.13 seed came racing out the blocks to win the first three points on Federer's serve, eventually claiming the first game with his third break point.
The Croatian, who had a first-serve percentage of 80 in the opening set, came under little pressure from the Federer return but he did look briefly troubled at 30-30 in the eighth game, until the veteran smashed a volley into the net and the opportunity was gone.
Coric went on to seal the set in 34 minutes and it was deja vu in the first game of the second, as Coric broke again. He squandered a first break point by firing a forehand into the net, but claimed the advantage on his second chance when his opponent shanked an awful forehand long.
The 21-year-old stayed on the attack, forcing break points in two further games that were both snuffed out by big serves from the Swiss star, who just about remained in contention.
Serving for the match, Coric perhaps showed a first sign of nerves with a weak forehand into net to fall 15-30 down, but he responded with a big unreturned first serve, an ace and a forehand winner to send his illustrious opponent crashing out.