Over the past six weeks dating to Queen's, the revitalized Fish - who lost 15 kilograms last autumn and streamlined his game as he recovered from knee surgery - has contested the Queen's final and won this month on Newport grass.
The sixth seed will face fellow American John Isner, who struggled in the heat against Kevin Anderson but benefitted from late cloud cover on the way to a 6-3, 6-7 (7/9), 6-3 victory.
Fish snapped a seven-year drought against Roddick, his former roommate during their teenaged years in Florida. The number 49 Fish beat his mate in 2003 in their first ATP clash. Since then, Roddick had won nine in a row.
"This is fantastic," Fish said. "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."
Fish has powered through in the steamy deep south without dropping a set all week while Roddick had struggled through three sets in his previous two matches.
Fish beat Isner in their only prior meeting, last season indoors.
Fish needed only one break to secure victory over Roddick, firing nine aces and 27 winners. Roddick, with two titles this season, was nil for three on break points, with the winner now on a nine-match run of success this summer.
Isner, winner of the longest match in tennis history less than a month ago at Wimbledon, will be playing in his fourth final of the season. He owns a title at Auckland while missing out in Memphis and Belgrade.
Isner and opponent Anderson were long-time foes, having played several times while attending different American universities. Isner now stands 3-1 over the South African on the ATP Tour.
The win took two and a half hours, with thunder rolling in the background in the closing moments while a siren warned golfers off an adjacent course on match point.
"The heat was brutal," said number 19 Isner. "But I was really waiting for that cloud in the third set. I needed it.
"I had melted before in a match like this and I was determined not to do that again. I stayed strong mentally. I was able to play through and pull it out. I just wanted to get off the court."
It was far from straightforward for the relieved winner, who missed a chance to go through in straight sets when Anderson saved a match point.
Anderson, the number 96, claimed the second set on his fifth set point from a forehand winner.
Isner fired 20 aces as he rescued victory while Anderson - both men stand well over two metres tall - had 14. The American number two saved all seven break points he faced.
"It was disappointing to lose. I thought I was playing pretty well," said Anderson. "I made him work harder for his service games than he did for me."
Isner's win was his 27th of the season against 15 defeats. He secured the win with a break of Anderson in the penultimate game and recovered from 0-30 as he served it out a game later.
"It was really hot. I was sweating through my shoes," Anderson said. "I knew it would be tough. I started well in third but I played one average service game and he took advantage."