Australia's Richie Porte (BMC) finished third 12 seconds behind his former Team Sky teammate Thomas, who replaced long-time race leader Michael Matthews (Orica-GreenEDGE) at the top of the general classification on Saturday.
Thomas, who was dropped in the ascent to the Col d'Eze, managed to reduce the gap during the nail-biting descent to the Promenade des Anglais at the end of the final stage, a 134km hilly ride around Nice won by Tim Wellens (Lotto-Soudal).
“We managed to get away with a large group, where Thomas De Gendt took control. On the penultimate climb I accelerated for the first time and five riders were able to follow. Afterwards a few other riders could bridge the gap. On the Col d’Èze I went full gas and just after the summit Contador and Porte joined me. With still fifteen kilometres to go and with a strong headwind we knew it wouldn’t be easy, but the cooperation went fluently. We remained ahead and I won the sprint. I have to admit that I gambled a bit during the final kilometres by not pulling at the front anymore, but it’s great to win against such great riders."
Contador (Tinkoff) took second place on the day ahead of Porte in third with Thomas finishing in the second group five seconds off the pace.
Porte admitted he was disappointed not to at least finish in the top two after Thomas' looked to have lost his legs.
"To be honest it's a little surprise," Porte said.
"I really didn't expect to finish third after such a finale with Contador. But congrats to Geraint, he deserved it.
"It was a different approach to Col d'Eze, we did it much faster this time. It was so fast in the descent, you didn't really have time to think.
"We knew Tim Wellens was going for the stage win and for Alberto and I, it was a matter of making as much time as possible."
Thomas had started the day with a 15-second advantage over Contador, who claimed a six-second bonus with his second place in Sunday's stage.
"I felt good, I felt strong, in control (when Contador first attacked)," said Thomas.
"But when he went halfway of Col d'Eze, my legs went away. I thought it's going to be all over, but Sergio (Henao) stayed with me. I had a 54 chain ring on in the descent and I needed that, I went just full gas to finally catch up in the last few kilometres."
Thomas's win means Sky have now won the prestigious Paris-Nice race for the fourth time in five years after Bradley Wiggins prevailed in 2012 and Porte triumphed in 2013 and last year.
"It's incredible to beat Contador. Man, he is one of the best stage racers ever. Richie won last year, it's hard to believe I beat those two. It's the biggest win for sure of my whole career," said Thomas.
After winning two stages and wearing the leaders's jersey, Australia's Matthews eventually finished in 53rd place but did claim the points classification green jersey.
”It was the first time that I have fought really hard on every stage of a race and I realise that it is important to try and conserve as much energy as possible," Matthews said.
"There are more demands placed on you when you are in the leader’s jersey, not just during the race but also after the finish.”
”I’m very happy to have won the green jersey and I can take a lot of confidence into the coming races.”