Tsitsipas was beaten by world No.1 Rafael Nadal in a marathon match on Saturday (AEDT) but showed little sign of weariness as he claimed his second win over six-time ATP Finals champion Federer.
The 21-year-old saved 12 break points in his Australia Open victory over Federer in January and the world No.3 failed to take 11 out of 12 this time around.
Tsitsipas made Federer pay, progressing into his sixth final of what has been a fantastic season, with Dominic Thiem or defending champion Alexander Zverev awaiting.
Having held serve in game one, Tsitsipas broke at the first time of asking with a well-worked point to take control of the set.
Tsitsipas saved three break points in game seven, although Federer subsequently held to love before winning a brilliant point at the culmination of a thrilling rally.
Three set points went begging for Tsitsipas as Federer teed up a sixth opportunity to break, only for a long backhand to hand his opponent a reprieve.
An incredible game rolled on, but at the seventh time of asking, Tsitsipas finally wrapped up a 47-minute first set.
Federer started set two with a crisp hold, yet the Swiss found himself a set and a break down when he sent a weak effort into the net as Tsitsipas broke to love.
But Federer responded brilliantly, taking a 40-love lead on Tsitsipas' serve, only to once again squander three more break points.
A sublime backhand and exquisite drop shot set up Federer's 10th break point, however, and this time he took advantage to draw level at 2-2.
Tsitsipas broke back immediately though and two overhit efforts put Federer two games down.
Another strong hold of serve put Tsitsipas on the brink and, despite some nervy shots on his last service game, a thumping ace secured a deserved victory.