Federer, the seven-time champion in Ohio, bids to increase his tournament leading total as Djokovic seeks to win the only Masters 1000 tournament missing from his impressive titles collection.
Second seed Federer was leading his semi-final 7-6 1-1 when David Goffin retired with an injury. The Belgian required treatment for a shoulder problem after losing the opening set.
Djokovic beat the 2016 winner Marin Cilic 6-4 3-6 6-3 to earn his place in the final.
"I realised that he was not serving very big," Federer said. "But it was only after he was treated that I knew something might be wrong.
"I could see that he was unhappy, but I thought he was going to play on," said the 37-year-old Swiss, who was delighted with the quick progression.
"I am glad that my serve has worked well all week and happy today was fairly easy."
Djokovic leads a rivalry, which dates to 2006, by a slender 23-22 margin, with the Serb winning three of their last four meetings too.
Nevertheless, Federer won their only previous final here in 2015 in straight sets.
"It is tough, I am very pleased to reach the final once more here," Djokovic said.
"It has been a difficult week with rain delays and all that was happening. I have been down in my last three matches but I have come back."