The second seed overcame the defending champion 6-4 6-1 1-6 6-3, ending the Spaniard’s 20-match winning streak at the All England Club.
“When you’re playing the best player in the world, Rafael Nadal, who has won two out of the last three Wimbledons and he has always been winning the big matches against me in the Grand Slams, I had to be on the top of my game. I had to play my best,” he said after the match.
“I think I played probably my best match on the grass courts ever.”
The result marks the Serb’s fifth final win against Nadal this year but his first successful Grand Slam meeting against him.
Djokovic is due to be ranked world number one on Monday as ten-time Slam winner Nadal slips to second place.