Nishikori dropped the first set and barely won the second, but dominated the third in a 2-6, 7-6 (7-4), 6-0 victory. He broke the Serbian star five times and recorded the win in two hours, 16 minutes.
The 21-year-old Nishikori, who is ranked 32nd in the world, has one career title to Djokovic's 28. Djokovic has won four Grand Slam titles and three this year; Nishikori has never advanced beyond the fourth round of any major tournament.
But Nishikori has been playing well recently, and reached the semifinals for the third time in his last four tournaments.
He will try to prevent hometown favorite Federer from taking the Basel crown for the fifth time in the last six years.
The third-seeded Federer moved into the finals with a 7-6 (7-5), 6-2 win against countryman Stanislas Wawrinka. He won 80 percent of his first-serve points during a quick second set.
Federer has never before faced Nishikori, who notched his only career title in February of 2008 at Delray Beach and lost the final in Houston in April.
The 2011 Basel champion will collect $450,000.