"I feel good about New York - but I'm going to savour this one for a bit."
Federer, 31, was the oldest Cincinnati winner since Andre Agassi, now 34, took the trophy in 2004.
Top seed Federer shot out of the blocks at the start, winning the opening set in a mere 23 minutes. The pace slowed in the second as Djokovic collected his wits and began to challenge, taking the set into a tiebreaker.
Federer earned a 3-0 lead in the decider, only to see his rival pull it back 3-3.
The Swiss was unable to convert on a first match point, but promptly slammed down an overhead winner to save a Djokovic set point which would have prolonged the afternoon.
Federer finished the job on his second chance with a stinging forehand after 79 minutes.
"Even with how well I'm playing you never expect yourself to win these big matches. It's been a great week for me," Federer said.
Djokovic has now lost his last two meetings with Federer after he was beaten in a Wimbledon semifinal last month.
"Roger, he was the better player today. I got off to a slow start and could never catch up," said Djokovic.
"I didn't think I'd get this far this week after winning in Canada. So this is a great result for me. Hopefully it will point me towards a good US Open," said the New York defending champion.
Djokovic was playing in his 49th ATP final, now standing 31-18 in finals.
The tournament was the 16th consecutive Masters 1000 tournament to be won by one of four players - Federer, Djokovic, Nadal or Andy Murray.
Federer will remain atop the ATP rankings through the US Open, adding another three weeks to his all-time total as he begins his record 292nd week in the top spot.
Djokovic's defeat ended his nine-match winning streak.
- AAP