Andrea Dovizioso prevailed by 0.023 seconds against Marc Marquez in a thrilling MotoGP Qatar Grand Prix, while Cal Crutchlow took a podium on his return.
Just as they did last year, Dovizioso and Marquez engaged in a late battle, with the Ducati rider repelling a last-corner lunge from the Honda man.
Ducati duo Dovizioso and Jack Miller [Pramac] utilised their holeshot device to excellent effect by hitting the front into Turn 1, while poleman Maverick Vinales dropped to seventh on his works Yamaha.
Marquez moved into second at the end of lap two as Miller was forced to sit up as he discarded his detached seat foam, with LCR's Cal Crutchlow up to third as a result on his first race since Japan last year.
Having started from the fourth row, Suzuki duo Joan Mir and Alex Rins had found themselves inside the top five on lap three, with Rins moving ahead on the following tour.
Rins soon attacked the Honda duo of Crutchlow and Marquez ahead, before launching his first raid on Dovizioso's lead towards the end of the fifth lap.
Dovizioso retaliated with the brutal grunt of the GP19 moments later into the first turn, with the pair trading positions over the next handful of laps.
Marquez muscled his way past Rins on lap 11 at Turn 6, forcing the Suzuki rider wide and allowing Danilo Petrucci – who briefly led Marquez – on the sister works Ducati to move through too.
A mistake from Dovizioso at Turn 4 on lap 21 allowed Marquez through. But he returned to the front to start the final lap, Marquez making another attempt at Turn 10.
Marquez launched his RC213V up the inside of Dovizioso at the final corner, but ran in too hot and let the Ducati rider to get the run out of the turn to snatch back-to-back Qatar wins.
Crutchlow passed Rins late on to steal the final podium slot, while Valentino Rossi recovered from 14th on the grid on the Yamaha to miss victory by just six tenths.
Petrucci faded from the lead battle late on and was sixth at the flag ahead of Vinales, with Mir, LCR's Takaaki Nakagami and the Aprilia of Aleix Espargaro rounding out the top 10.
Franco Morbidelli dropped out of the top 10 in the closing stages to finish 11th, while Sepang Racing team-mate Fabio Quartararo recovered from a pit-lane start after encountering an issue at the start to finish 16th.
Jorge Lorenzo's debut Honda outing ended in the points in 13th, flanked by Pol Espargaro [KTM] and Aprilia's Andrea Iannone. Johann Zarco took the final point on his maiden KTM race.
Miller was forced to drop out on lap 12 as he struggled to ride his Ducati without a seat, while team-mate Fracesco Bagnaia suffered a mechanical issue. Aprilia test rider Bradley Smith crashed on the penultimate lap.