The Movistar rider jumped away from the group of favourites with more than 50 kilometres left in the 110-km mountainous ride around Nice to take third place in the eighth stage won by fellow Spaniard David de la Cruz of Team Sky.
It gave Soler a four-second bonus that helped him move past overnight leader Yates after the Mitchelton-Scott rider was dropped in the last ascent of the day.
Watch the thrilling finish to Paris-Nice as Simon Yates misses out by just 4 seconds!
Yates made contact with other favourites in the descent into Nice but finished sixth, 38 seconds behind De La Cruz and second placed Omar Fraile of Spain. He was 35 seconds adrift of Soler.
The race victory was a first as a full pro for 24-year-old Soler, who won the Tour de l’Avenir, a mini Tour de France for under-23 riders, in 2015. And speaking in Nice, the Movistar rider said:
I can't believe it yet. All my team-mates worked hard for me all week, and happily we were able to finish this off for them in such a great way. I wasn't expecting to take this one, especially after the time I lost on Saturday's finish. However, we reset our minds, planned a good strategy with our team-mates and sports directors, choosing to launch a long-range attack. We thought there would be a big breakaway like in last year's final stage, but it didn't happen. Fraile was already ahead and I jumped into the third-to-last climb - the point where I had planned to move - to leave the bunch behind. De la Cruz and Ion joined me there, we David and myself opened a gap - and it was just full-gas until the finish.
Watch Adam Yates surge to victory in Michele Scarponi's hometown
Another Spaniard, Gorka Izaguirre, took third place overall. He was 14 seconds off the pace despite crashing in the final descent, while his Bahrain-Merida team mate and brother Jon ended up fourth.