Jorge Martin was victorious in the first Moto3 race of the season in Qatar, narrowly beating fellow title contender Aron Canet.
From second on the grid, Martin took the lead on the opening lap and quickly pulled away to run on his own.
Canet and Enea Bastianini, starting seventh and 10th respectively, soon also separated themselves from the rest of the field and the pair made quick work of catching up to Martin.
The trio only raced together for two laps before Bastianini crashed out at Turn 6.
"[It was] so difficult today because I pushed a lot, Martin was so fast in this track," said the Leopard Racing rider after his incident.
"I pushed over the limit and at the sixth turn the rear tyre slid a little. It was a stupid error."
The incident left Martin and Canet fighting for the win, as they consistently showed superior pace compared to the others.
For the majority of the race, Martin was leading, with Canet repeatedly ducking out of making a move on the main straight and allowing the Gresini rider to stay first.
On the final lap, Canet was unable to slipstream past Martin and the latter managed to hold on to the lead to win by 0.023s.
The battle for the final spot in the top three, which was fought among several riders in typical Moto3 fashion, was won by Bastianini's teammate Lorenzo Dalla Porta, who took his maiden podium.
Niccolo Antonelli (SIC58) and Gabriel Rodrigo (RBA BOE), the only KTM in the top eight, took fourth and fifth respectively from the first row on the grid.
Martin's Gresini teammate Fabio di Giannantonio was sixth despite spending the first half of the race outside of the top 10 and not in the group which was fighting for third.
Japanese duo Kaito Toba (Honda Team Asia) and Ayumu Sasaki (Sprinta) completed the top eight, followed by Jakub Kornfeil (Prustel GP) and Andrea Migno (Angel Nieto).
Marco Bezzecchi and John McPhee were also in contention for a top-three finish but both suffered dramatic last-lap crashes.
Other riders to retire were Niccolo Bulega, Phillip Oettl, Darryn Binder, Livio Loi and rookie Alonso Lopez.
|3||48||Lorenzo Dalla Porta||Honda||6.746|
|6||21||Fabio Di Giannantonio||Honda||6.916|
|Ret||17||John McPhee||KTM||1 lap|
|Ret||72||Alonso Lopez||Honda||7 laps|
|Ret||11||Livio Loi||KTM||7 laps|
|Ret||8||Nicolo Bulega||KTM||8 laps|
|Ret||33||Enea Bastianini||Honda||13 laps|
|Ret||65||Philipp Ottl||KTM||15 laps|
|Ret||40||Darryn Binder||KTM||15 laps|