Yates took the victory after a gruelling five hours of racing in cold, wet conditions that saw multiple riders abandon the prestigious French stage race.
Belgian Dylan Teuns (BMC) came home for second spot, with Bahrain-Merida brothers Ion Izagirre and Gorka Izagirre placing third and fourth on the stage.
The stage win netted Yates the overall race lead after former leader Luis Leon Sanchez (Astana) was dropped on the long final climb to Valdeblore La Colmiane.
Yates now leads Ion Izagirre by 11 seconds overall, with Gorka Izagirre in third at 12 seconds.
How it happened
Eight riders formed the day's high-quality escape group on the opening climb of the Côte de Gattières: Thomas De Gendt (Lotto-Soudal), Tony Gallopin (AG2R), Alessandro De Marchi (BMC), Nicolas Roche (BMC), Jarlinson Pantano (Trek-Segafredo), Rony Sutherland (UAE), Amael Moinard (Fortuneo) and Jesus Herrada (Cofidis).
With De Marchi in the break – positioned at the start of the day in 20th place and 2-36 behind race leader Sanchez – the peloton was evidently not keen to give them much of an advantage. The gap stretched out to three minutes, but was clipped back to under two minutes into the final 50km.
Herrada was the first rider to drop out of the break after the Côte de la Sainte-Baume.
The weather conditions made descending risky, and the peloton split into two on the descent of the second category Col Saint-Raphaël. Tim Wellens (Lotto-Soudal) – fifth overall at the start of the day – found himself on the wrong side of the split and was forced to waste energy in the chase.
It was a long effort, with Wellens only getting back in touch with the peloton containing race leader Sanchez with 35km to go. Henao also yo-yoed off the back of the yellow jersey group, not looking overly comfortable with the day's riding.
Sutherland was the next rider to get dropped from the break on the descent of the Côte de Villars-sur-Var and was quickly picked up by the peloton, which by this point was within a minute of the leaders.
De Marchi and Pantano crashed on a tight bend with 28km to go, with De Marchi tumbling over the roadside barrier and down a steep slope. Remarkably, he walked back up the slope with some assistance.
With 25km to go, Roche, Gallopin and Moinard were left in the lead with a one minute gap over the bunch, being led by Astana, Mitchelton-Scott and Bahrain-Merida riders.
The lead trio hit the base of the 16km final climb with only a 35-second gap over the chasing bunch. Roche and Moinard were soon dropped, leaving Gallopin alone in the lead.
However, Gallopin couldn't keep up the momentum on the climb having been out in the break all day, and was caught with 14km to go.
Astana and Bahrain-Merida were still setting the pace of the bunch, which proved to be too much for Esteban Chaves (Mitchelton-Scott), who dropped out of the pack.
With 10km to go, the peloton was still all together with no-one either willing or able to launch at attack up the mist-shrouded road.
With no attacks coming from the peloton, most of the action was coming from riders being dropped – Bauke Mollema (Trek-Segafredo) was another high-profile name to get left behind with 7km to go.
The biggest news came with 6km to go, as Roman Kreuziger (Mitchelton-Scott) moved to the front of the bunch. The chance in tempo almost immediately saw Sanchez get dropped. Kreuziger's team-mate Yates then attacked with 4.3km to go, with Ion Izagirre (Bahrain-Merida) following.
As riders attempted to chase them, the peloton blew apart with Julian Alaphilippe (Quick-Step Floors) among those left behind.
Up front, Izagirre was struggling to keep in touch with Yates, and when the British rider accelerated just before the kilometre-to-go banner, Izagirre was left behind.
Yates finished with eight seconds in hand over Izagirre and Dylan Teuns (BMC) to seal his position at the top of the general classification with one stage remaining.
Dan Martin (UAE Team Emirates) was among a number of riders abandoning the race during the stage. The Irishman placed third overall last year, but appeared to be struggling with the conditions. Martin's UAE team-mate Alexander Kristoff was also among the abandons.
The 2018 Paris-Nice concludes on Sunday with a final stage starting and finishing in Nice. Although not featuring the size of the climbs on Saturday's stage, it's a very tricky route with the potential for upset on the final day particularly as the top of the general classification is so tightly packed.
Paris-Nice 2018, stage seven: Nice to Valdeblore La Colmiane, 175km
1. Simon Yates (GBr) Mitchelton-Scott, in 5-02-54
2. Dylan Teuns (Bel) BMC Racing, at 8 secs
3. Ion Izagirre (Esp) Bahrain-Merida, at same time
4. Gorka Izagirre (Esp) Bahrain-Merida, at 13 secs
5. Tim Wellens (Bel) Lotto-Soudal, at same time
6. Patrick Konrad (Aut) Bora-Hansgrohe, at 20 secs
7. Sergio Henao (Col) Team Sky, at 46 secs
8. Marc Soler (Esp) Movistar, at 46 secs
9. Jakob Fuglsang (Den) Astana, at 48 secs
10. Sam Oomen (Ned) Team Sunweb, at 54 secs
General classification after stage seven
1. Simon Yates (GBr) Mitchelton-Scott, in 27-29-02
2. Ion Izagirre (Esp) Bahrain-Merida, at 11 secs
3. Gorka Izagirre (Esp) Bahrain-Merida, at 12 secs
4. Tim Wellens (Bel) Lotto-Soudal, at 13 secs
5. Dylan Teuns (Bel) BMC Racing, at 27 secs
6. Marc Soler (Esp) Movistar, at 37 secs
7. Patrick Konrad (Aut) Bora-Hansgrohe, at 39 secs
8. Sergio Henao (Col) Team Sky, at 57 secs
9. Julian Alaphilippe (Fra) Quick-Step Floors, at 1-48
10. Alexis Vuillermoz (Fra) Ag2r La Mondiale, at 1-49
Thank you for reading 5 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