Struff, who upset sixth seed Stefanos Tsitsipas in the last 16, challenged the Italian as he hit 18 aces and saved 16 of 18 break points in the two-and-a-half-hour contest.
"It was a very tough match," Sinner said after his third consecutive three-set win. "I had chances in the second set and chances in the third, but I couldn't take them.
"I just tried to accept these kind of challenges. It was very tough mentally.
"I played a lot yesterday and today. Two hours on grass is a long time. I'll try to recover for tomorrow. Hopefully I'll show some good tennis."
Sinner, playing his first tournament atop the ATP world rankings, will face China's 42nd-ranked Zhang Zhizhen who edged Christopher Eubanks of the United States 6-4 4-6 7-5.
German Alexander Zverev also reached the semis as he rallied after dropping a first-set tiebreak to Frenchman Arthur Fils to prevail 6-7(5) 6-3 6-4.
The world number four will face Polish fifth seed Hubert Hurkacz, who defeated American Marcos Giron 7-6(5) 6-4.