Second-seeded Philipp Kohlschreiber of Germany avoided a similar upset by beating Gael Monfils of France 6-4, 6-4 to advance.
Haas saved four match points before sending a backhand wide to send Fognini into his third semifinal of the year. He lost the previous two, in Acapulco and Monte Carlo.
''It's my second semifinal in Stuttgart, maybe I can go all the way,'' Fognini said. ''I just played my tennis and it worked for me.''
Fognini will next play Roberto Bautista Agut of Spain, who advanced when German opponent Michael Berrer retired with a left elbow injury. Agut was leading 6-2, 0-1 when Berrer quit.
Haas, at 35 the oldest player in the top 100, said Fognini played better on the key points.
''I had five break points in the second set and if you don't use them you can't win,'' Haas said.
It's the first time Hanescu has made it into the last four of a tournament since Nice in 2011. He now has a 4-0 record against Paire, all on clay.
Hanescu next faces Kohlschreiber, who was up two breaks of serve in each set before closing them out. Monfils had seven double-faults.