Soler finished third on the stage around Nice after making it into a three-man breakaway, with Team Sky's David De La Cruz taking the stage honours ahead of Omar Fraile (Astana) in a sprint for the line.
Yates finished 35 seconds back on Soler in a group of other GC contenders, having held a 37 second advantage over Soler at the start of the day. That gap, a two second time bonus during the stage and the three second bonus on the line for third place was enough to give Soler the overall title at the age of just 24.
25-year-old Yates takes second place overall with Gorka Izagirre taking the last step on the podium in third place.
For Team Sky, the second stage victory of the race will come as some comfort after their team leader Wout Poels crashed out earlier in the week and defending champion Sergio Henao was dropped before the finale of the final stage. It's the second year in a row that De La Cruz has claimed the final stage into Nice.
How it happened
Once again Paris-Nice was set for a climactic showdown on the mountainous loop around Nice on the final stage, with much of the top-10 on GC within 40 seconds of Simon Yates at the top of the GC.
With just 110km on the cards but six difficult climbs, the stage got off to an expected ferocious start despite the horrid weather conditions.
While no definitive breakaway was able to immediately get away, the peloton quickly split and around 24 riders including the key GC riders were away.
From there attacks came frequently, with Astana keen to get a rider away after the disappointment of seeing race leader Luis Leon Sanchez drop out of contention on Saturday's summit finish.
Eventually with around 45km to go a trio were able to break free and establish a decent gap, with De La Cruz and Soler bridging to Fraile, who had been out front on his own with Julian Alaphilippe (Quick-Step), who was unable to hold the pace.
Soler was the only rider who posed a threat to Yates' overall lead, and by this time Mitchelton-Scott were down to just two riders in support.
The three breakers established a maximum gap of around 1-30, with Mitchelton-Scott working to pull that back to under a minute as the peloton ascended the penultimate climb of Col d'Eze.
As the riders hit the final climb of Col des Quatres, the peloton began to seriously thin out with Yates isolated among the other GC riders.
With just under 13km to go the attacks began to happen, with Ion Izagirre (Bahrain-Merida) heading up the road. Yates was able to manage the gap for a short time, but began to fade with the likes of Tim Wellens (Lotto-Soudal), Dylan Theuns (BMC) and Gorka Izagirre then leaving him behind as they bridged to the attacker.
A gap of around 11 seconds held between Yates and that group over the top of the climb, with the break still holding 40 seconds as they plunged down the descent towards Nice.
Soler was dropped in the wet conditions by his break companions, but by the bottom had managed to get back on.
Yates was also able to bridge back across to the group of favourites who had dropped him earlier, with a crash between the two Izagirre brothers slowing the group significantly.
Spaniard Soler, aware that he had a chance to take the overall title, was happy to set the pace and guide his countrymen De La Cruz and Fraile into the finish and allow them to fight it out for the stage.
As Soler pulled off the front, Fraile was the one to go early but couldn't distance De La Cruz, who jumped on his back wheel before rounding him the final metres to beat him by a wheel on the line.
Behind, the Yates group were working to minimise losses but it wasn't enough, with Soler taking the 2018 Paris-Nice title by four seconds in a dramatic finish.
Paris-Nice 2018 stage eight: Nice-Nice (110km)
1 David De La Cruz (Esp) Team Sky, in 2-53-06
2 Omar Fraile (Esp) Astana Pro Team, st
3 Marc Soler (Esp) Movistar Team, at 3s
4 Patrick Konrad (Aut) Bora-Hansgrohe, at 38s
5 Tim Wellens (Bel) Lotto Soudal
6 Simon Yates (GBr) Mitchelton-Scott
7 Dylan Teuns (Bel) BMC Racing Team
8 Richard Carapaz (Ecu) Movistar Team
9 Gorka Izagirre (Esp) Bahrain-Merida
10 Ion Izzagirre (Esp) Bahrain-Merida, all same time
Final overall classification
1 Marc Soler (Esp) Movistar Team, in 30-22-41
2 Simon Yates (GBr) Mitchelton-Scott, at 4s
3 Gorka Izagirre (Esp) Bahrain-Merida, at 14s
4 Ion Izzagirre (Esp) Bahrain-Merida, at 16s
5 Tim Wellens (Bel) Lotto Soudal, st
6 Dylan Teuns (Bel) BMC Racing Team, at 32s
7 Patrick Konrad (Aut) Bora-Hansgrohe, at 44s
8 Alexis Vuillermoz (Fra) AG2R La Mondiale, at 1-54
9 David De La Cruz (Esp) Team Sky, at 2-15
10 Felix Grossschartner (Aut) Bora-Hansgrohe, at 2-35
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1