Spaniard Jorge Lorenzo took his second MotoGP win in a row for Ducati on Sunday with a pole to flag victory at his home Catalunya Grand Prix.
Reigning world champion and overall leader Marc Marquez, Lorenzo's compatriot and future Honda team mate, finished second with Yamaha's Italian great Valentino Rossi completing the podium in third place.
Marquez still extended his overall lead after seven races, the four-times MotoGP champion now on 115 points and 27 clear of Rossi.
Motorcycling-No return for Lorenzo in 2020 as MotoGP cancels wild cards
"A second consecutive victory is amazing, it's amazing how things change in such a small time," said Lorenzo, whose win at Mugello in Italy on June 3 was his first since leaving Yamaha in 2016.
"Here we have been very competitive, very constant all the weekend," added the Spaniard, whose pole was his first for Ducati and whose departure from the team at season end has already been announced.
Lorenzo dropped to third at the start, with Marquez and Suzuki's Andrea Iannone faster to react and muscling ahead but he kept calm and was back in front by the second lap.
He pulled away and gave his rivals no chance to come back at him, winning by 4.479 seconds at the Circuit de Catalunya.
"I was pushing...I think we chose the correct tyres for us but even like this it was hard to beat Ducati," Marquez said.
"The most important thing is that we increased the lead in the championship."
Lorenzo's Italian team mate Andrea Dovizioso, last year's overall runner-up, was an early faller and is now level on 66 points with the Spaniard, who had a tough 2017 season and a slow start to 2018.
Malaysian Hafizh Syahrin picked himself up after a spectacular fall from his Tech3 Yamaha while Spaniard Tito Rabat hurriedly got off his non-works Ducati after an engine blowout set it ablaze.
In a race littered with crashes, only 14 riders finished -- not enough to fill all the scoring positions.
Motorcycling-MotoGP intends to start season in July with races in Jerez
German, Dutch and Finnish MotoGP races cancelled