Halle Westfalen - Roger Federer booked his 12th career final at the ATP Halle grass tournament on Saturday, beating qualifier Denis Kudla 7-6 (7/1), 7-5.
The Swiss needs to win the title on Sunday - it would be his tenth at the event - to remain world number one heading into Wimbledon.
Federer is also aiming for his 99th career title.
He will face Croatian Borna Coric, who advanced 2-3 when Spanish fourth seed Roberto Bautista Agut had to retire after slipping on the grass and injuring himself.
Federer's win over Kudla was his 20th in a row on grass, dating to June, 2017. He sat out the clay court season and began on grass last week with a title at Stuttgart.
"I'm very happy, I've never played back-to-back finals on grass in the Wimbledon run-up," Federer said. "This is a first for me."
Federer is back in a familiar spot in Halle, which models its Centre Court after its namesake at the All England club, as he works to fine-tune with a Wimbledon title defence starting a week from Monday.
"I was happy to win Stuttgart and happy to make another final here. My comeback (after skipping the clay) has been rather successful."
"I hope I can find my best game. I've said you usually start playing your best towards the end of a tournament, so hopefully I'm going to have a good final."
Federer needed just under 90 minutes to get the job done and hold off the 109th-ranked Kudla, who had not lost a set going into the semi-final.
Taming Kudla was no easy task, with Federer losing a break after taking an early 2-0 lead.
The first set went into a tie-breaker where the 20-time Grand Slam winner was able to step his game up a gear, racing to 6-0 in the tie-breaker and taking it two points later with his seventh ace.
The top-seeded Swiss kept the pressure on Kudla in the second but expressed a moment of frustration as he drove a ball over the stadium walls after losing a point in the third game of the second set.
"I hit out of the stadium every other day in practise," he said. "But it doesn't happen much on live TV.
"But I find it very funny and comical, it makes me smile inside. This is a tough court with a lot of bad bounces.
"But I told myself in the set to shake it off, don't let things bother me, don't get too bad as it happens to both.
"I want to do well and win, I have a winning mentality and sometimes I can get unhappy or frustrated."
Federer gained the crucial service break for a 6-5 lead as Kudla returned long, and the Swiss closed out the victory a game later on the first of two match points.
The 36-year-old has reached the final four in each of his last 14 Halle appearances.
Coric, the world number 34 will be playing his first grass final and stands 1-3 in ATP finals on all surfaces. His lone win came in 2017 in Casablanca. He has lost twice to Federer, most recently in the Indian Wells semi-finals last March.
"My chances are not big for sure, obviously," he said. "But I'm going to go out there and enjoy it.
"I didn't expect this at the beginning of the week. Today I was a little bit lucky. I'm sorry for Roberto.
"But I can rest a little bit now which is good. I'm going to try to win. That's for sure."
Results at the ATP Halle tournament on Saturday (x indicates seed):
Roger Federer (SUI x1) bt Denis Kudla (USA) 7-6 (7/1), 7-5
Borna Coric (CRO) bt Roberto Bautista Agut (ESP x4) 2-3 - retired injured after fall