Ducati rider Jorge Lorenzo scored his second consecutive MotoGP win, converting pole position at Barcelona into a dominant triumph after a short battle with Marc Marquez.
Lorenzo led every lap but the first in an attritional race, with not enough classified finishers to fill out the points-scoring top 15 places.
The three-time world champion is now level on points with team-mate Andrea Dovizioso, who crashed out, and is 49 behind Marquez.
Lorenzo had been expected to head the field into Turn 1 from pole, but instead lost the lead to Marquez off the line, before dropping behind Andrea Iannone as the pack raced through the opening corners.
Iannone then challenged Marquez for the lead at the sharp Turn 10 left-hander, sliding up down the inside before running well wide, which allowed Marquez to keep the lead and Lorenzo to retake second.
Lorenzo then lined up Marquez for a move on the start-finish straight on the next tour, using the slipstream and Ducati's straightline prowess to reclaim the lead.
An expected Lorenzo breakaway did not follow in the next few laps, with Marquez running right on his future Honda team-mate's tail.
The pair broke away from all but Dovizioso, who managed to just about stay in touch with Marquez until he lost the front of his bike at the Turn 5 left-hander on the nine lap of 24.
Immediately after his team-mate fell, Lorenzo began to check out, remaining in the low 1m40s while Marquez's pace dropped off.
Lorenzo's lead was up to a second and a half as the raced passed its halfway point, and he managed it from there to the chequered flag, eventually winning by 4.4s.
Rossi had a lonely race to his fourth third-place finish of 2018, breaking away with ease from the riders behind him, but was unable to keep up with the leaders.
The Yamaha rider is now Marquez's nearest rival in standings, 27 points adrift.
LCR Honda's Cal Crutchlow fought through from 10th to fourth, picking off Honda works rider Dani Pedrosa at the Turn 4 right-hander in the second half of the race.
Maverick Vinales had plummeted down the order after a horrific start, but recovered to finish sixth behind Pedrosa, after prevailing in a race-long battle with fellow Yamaha rider Johann Zarco.
Pramac Ducati's Danilo Petrucci was ninth, ahead of Alvaro Bautista and Iannone, who struggled to stay on track throughout the race.
Pol Espargaro, Scott Redding and Karel Abraham completed the finishers, while Franco Morbidelli was classified 14th after crashing, remounting and then retiring in the pits.
KTM and Suzuki's respective wildcard entries - Mika Kallio and Sylvain Guintoli - set the tone for the race by crashing early on, with Tom Luthi, Xavier Simeon, Aleix Espargaro and Hafizh Syahrin all suffering standalone falls.
Takaaki Nakagami lost it at Turn 5, with his bike wiping out Bradley Smith, who had run as high as eighth early on.
Pramac's Jack Miller and Suzuki's Alex Rins also retired, while Tito Rabat's Avintia-run Ducati GP17 caught fire on the main straight when he was fighting in the top 10.
Results - 24 laps
|4||Cal Crutchlow||LCR Honda||Honda||24||9.805s|
|7||Johann Zarco||Tech3 Yamaha||Yamaha||24||13.432s|
|8||Danilo Petrucci||Pramac Ducati||Ducati||24||15.055s|
|9||Alvaro Bautista||Aspar Ducati||Ducati||24||22.057s|
|13||Karel Abraham||Aspar Ducati||Ducati||24||1m21.526s|
|14||Franco Morbidelli||MVDS Honda||Honda||21||3 Laps|
|-||Hafizh Syahrin||Tech3 Yamaha||Yamaha||20||Retirement|
|-||Tito Rabat||Avintia Ducati||Ducati||18||Retirement|
|-||Jack Miller||Pramac Ducati||Ducati||17||Retirement|
|-||Takaaki Nakagami||LCR Honda||Honda||13||Crash|
|-||Xavier Simeon||Avintia Ducati||Ducati||7||Crash|
|-||Thomas Luthi||MVDS Honda||Honda||3||Crash|