Fognini prevailed 6-2, 6-4 over the second-seeded home favorite. The 12th-seeded Italian is looking for his second straight title after winning his first tournament in Stuttgart, where he beat Haas in the quarter-finals.
Fognini next faces third-seeded Nicolas Almagro of Spain, who came from behind to beat defending champion Juan Monaco of Argentina 4-6, 6-0, 6-3.
Qualifier Federico Delbonis of Argentina upset 14th-seeded Fernando Verdasco of Spain 6-7 (5), 7-6 (8), 6-4 to make the semifinals of a tournament for the second time in his career.
The fifth-seeded Monaco beat Almagro in the Hamburg semi-finals last year. Almagro was runner-up in Hamburg two years ago, while Monaco beat Haas for the title last year.
Delbonis' previous semifinal appearance was two years ago, also on clay and also in Germany, in Stuttgart.
He will next play either top-seeded Roger Federer or Florian Mayer of Germany.
After fending off a pair of match points in the second set, Delbonis failed to serve out the match at 5-3. He then wasted two match points on Verdasco's serve before the Spaniard double-faulted on the third.
Results from the ATP Hamburg Open tournament on Friday (x denotes seeding):
Fabio Fognini (ITA x12) bt Tommy Haas (GER x2) 6-2, 6-4
Nicolas Almagro (ESP x3) bt Juan Monaco (ARG x5) 4-6, 6-0, 6-3
Federico Delbonis (ARG) bt Fernando Verdasco (ESP x14) 6-7 (5/7), 7-6 (10/8), 6-4