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.