Kyrgios saves five matchpoints to tame Tiafoe in Washington
The Wimbledon runner-up appeared set for an exit when Tiafoe set up an opportunity to serve for the win during the second set tiebreaker, but Kyrgios won the point and saved four more chances on his own serve to frustrate the American.
The mercurial Australian won the last three points of the tiebreaker to force a deciding third set, which he dominated with his precise heavy service to seal the contest at around 1 a.m. local time.
"Frances put himself in every position to win the match," Kyrgios said. "In those moments I wasn't really thinking too much. I was just trying to stay in the match and I survived.
"Then I felt like physically I was really fresh in the third set and served well. I was extremely lucky at times, but it was just a great match."
After both men held their serve during the first two sets, Kyrgios broke his opponent's delivery two times in the deciding set and converted his first match point when Tiafoe hit a return into the net.
It was the second victory on Friday for Kyrgios, who had to return in the morning to complete his rain-interrupted match against big-serving American Reilly Opelka (24).
The 27-year-old needed just 14 minutes to close out a 7-6(1) 6-2 victory against Opelka and will meet Sweden's Mikael Ymer for a place in the final.
"It wasn't easy, to be honest," Kyrgios added.
"Playing Reilly this morning in the heat was not ideal. Came out fast and strong, got it done. Then I was able to just get some rest and eventually just pull through."
The impact of Thursday's thunderstorm on the scheduling also meant that top seed Andrey Rublev (24), ranked eighth in the world, had to play two matches on Friday at the ATP 500 event.
Rublev defeated American Maxime Cressy 6-4 7-6(8) in the morning and then followed it up with a 6-2 6-3 win over another local hope in J.J. Wolf. The Russian will next face Yoshihito Nishioka in the semi-finals.