Fabio Quartararo overcame a poor start to win a dramatic Portuguese Grand Prix that saw Marc Marquez finish seventh on his long-awaited return.

Marquez said he was ready to "suffer" in his first race since sustaining a season-ending broken arm last July, but the six-time MotoGP champion enjoyed an encouraging comeback after making an early move from sixth to third.

However, it was Quartararo who took the victory, despite dropping down the field from pole position in a pulsating start, after Johann Zarco and Alex Rins crashed out in quick succession at the Algarve International Circuit on Sunday.

Quartararo took over from Zarco as championship leader after sealing back-to-back wins following his triumph in Doha, with Francesco Bagnaia and Joan Mir taking second and third place respectively.

Maverick Vinales could only finish back in 11th place on a great day for Quartararo.

Zarco darted up the inside in a dream start from third on the grid to take the lead from Monster Energy Yamaha rider Quartararo, with Marquez also impressing during the opening laps in Portimao.

Quartararo dropped back to sixth and Marquez caught the back of Mir's Suzuki as he slipped back following a promising beginning to the race.

Rins, who started in second, moved passed Pramac Racing's Zarco in a flash at Turn 13 to hit the front before Jack Miller and Miguel Oliveira - winner on home soil last year - crashed out.

Quartararo had ominously put a disappointing start behind him to apply the pressure, becoming the latest leader of the race with 17 laps to go.

Rins tried his best to cut the gap in second place but spun off 11 laps from the end at Turn 10 after Valentino Rossi had crashed out from 11th place.

Quartararo was in complete control when Rins spun and a second-placed Zarco hit the deck, with Ducati rider Bagnaia holding off Mir for second, having been back in 11th, as the early championship lead changed hands.