Third seed Sandhu looked in top flight as he took a commanding 2-0 lead and was 6-2 up in the third when Ghosal, ranked 18th in the world, led a comeback to take the third and fourth games and forced a decider.
However, Sandhu - ranked 60th in the world - fought his way back from 7-9 in the fifth game to draw level at 9-all and then took the last two points in style to complete a memorable 11-2 11-9 9-11 8-11 11-9 victory in 74 minutes.
It was Ghosal's first loss in nine years in the nationals and he said, "He played superbly and if at all it had to happen I am happy it happened against him as he's my best friend."
The women's final, in total contrast, was a tame affair as title holder Joshana Chinnappa brushed aside the challenge from Sachika Ingale 11-3 11-3 11-6 in only 22 minutes to clinch her 13th title in 14 finals, her only loss coming against now-retired Mekhla Subedar in 2011.
Sandhu, who is leaving tonight to take part in the Asian Beach Games in Thailand, looked unstoppable in the first game as he took a 10-0 lead before Ghosal earned his first point.
The younger rival jumped to a 4-0 and 7-2 lead in the second before Ghosal, who had won the Asian Games team gold at Incheon with his opponent, fought his way back.
The lead was narrowed to 8-10 before Sandhu won it to take a 2-0 lead.
