The scores, 7-6 (8-6), 6-7 (4-7), 6-3, gave the 27-year-old Kunitsyn his first career title on the men's tennis tour.
He collected a $171,000 first-place check.
"Everybody knows Marat is better than me but today I'm the winner," Kunitsyn told the BBC.
Safin, the tournament's seventh seed, a former world No. 1 and two-time Grand Slam champion, has not won a tournament since capturing the last of his 15 career titles at the 2005 Australian Open.
This was his second loss at the Kremlin Cup in the last three seasons.
Mathematician offers formula for finding the perfect Christmas tree
Video of Victoria’s Secret models trying to 'twerk' hits Instagram