Fish extended his winning streak to nine matches
Mardy Fish shocked top seed Andy Roddick 7-6 (7-5) 6-3 to reach the final of the ATP Atlanta Championship.
It ended a run of nine straight Roddick wins against Fish dating back to 2003.
Fish, who needed only one break to secure victory, firing nine aces and 27 winners, won in Newport this month and has gone nine matches without defeat.
In Sunday's final he faces John Isner, who he defeated in their only previous meeting last season indoors, after he beat Kevin Anderson 6-3 6-7 (7-9) 6-3.
World number 49 Fish, a former room-mate of Roddick during their teenage years in Florida, won their first ATP encounter, but then had to endure a miserable run against the former world number one.
"This is fantastic," said Fish, who is yet to drop a set this week.
"To finally beat Andy is great. It was a tough match but I served well and took my chances. I know I've improved my game and it's showing."
The 28-year-old has been revitalised after recovering from knee surgery, and reached the final at Queen's Club this year, where he lost to fellow American Sam Querrey.
Isner is ranked 19th in the world
American Isner, whose win over Nicolas Mahut at last month's Wimbledon was the longest match in history at over 11 hours, described the heat in Atlanta as "brutal".
"I had melted before in a match like this and I was determined not to do that again," added the world number 19.
After securing the first set with relative ease, world number 19 Isner made things difficult for himself when an unforced error on a volley allowed South African Anderson to save a match point in the second.
World number 96 Anderson went on to tie the match in a tie-break with a forehand winner.
However, Isner recovered from that setback, breaking Anderson to go 5-3 up before fighting back from 0-30 down to close out the match on his serve.
In Hamburg, Austrian Jurgen Melzer will meet Andrey Golubev of Kazakhstan in Sunday's German Open final.
Third seed Melzer beat Italy's Andreas Seppi 6-4 6-2, while Golubev overcame German Florian Mayer 7-6 (8-6) 6-4.