Den översta fröet hävdade den första uppsättningen 6-3, men den österrikiska sparat två matchpoäng i att vinna en tie-break 9-7 och sedan tog beslut 6-4.
Thiem, som slog Federer på lera förra månaden i Rom, kommer att spela för sin fjärde titel för säsongen på söndag.
Han kommer att möta antingen Argentinas Juan Martin del Potro eller Tysklands Philipp Kohlschreiber.
Thiem, 22, flyttade in i världens topp 10 för första gången denna vecka och slet ner sin 34-årige motståndare i en gripande gräs-court strid, som också inkluderade två regnbrytningar.
Federer, som hade knutit ihop med Ivan Lendl för de flesta vinsterna i den öppna eran (1.071) efter sin andra omgång seger mot American Taylor Fritz, hade missat den franska öppna förra månaden med ett ryggproblem.
Nederlaget kommer att bli ett slag mot Federer eftersom han siktar på att vinna en rekord åttonde Wimbledon singlar titel senare denna månad.
Prenumerera på BBC Sport nyhetsbrev för att få vårt tips på nyheter, funktioner och video skickas till din inkorg.
Roger Federer blev slagen av franska Open semifinalisten Dominic Thiem i semifinalen Mercedes Cup på Stuttgart.