After finishing fifth in the jumping section, the Norwegian started the final race with a delay of one minute 14 seconds but hunted down the leaders and sprinted to the line in Lahti.
He managed to hold his lead despite Japan's Akito Watabe chasing him right to the end and only the replay could determine who crossed first.
Third place went to Austrian Mario Seidl, who had dominated the jumping round with a score of 134 points to start the race first but lost his lead on the final lap and ended up crossing 15.6 seconds after the top two.
After the race, Graabak said: "It's always nice to win. I'm really pleased with my performance on the hill. Skiing felt more difficult today than yesterday, but I just tried to press hard.
I had trouble, but today was a happy ending