Andrea Dovizioso defeated Marc Marquez in a dramatic duel during the closing stages of the Qatar GP, the Italian beating home the Honda by just 0.027s.
Dovizioso made it difficult for himself however after a poor start from fifth on the grid, slipping to ninth by turn two on lap one.
The Ducati man then put in one of his trademark intelligent rides to climb back up to the head of the field, moving up to seventh by the end of the second lap.
Dovizioso managed to take the lead from race-long leader and poleman Johann Zarco in the closing laps, with main 2017 rival Marquez following through into second.
The ’17 runner-up then pulled the pin and tried to pull away, although Marquez was able to stay in the wheel-tracks of the Ducati until the closing stages of the last lap.
Marquez then threw his Honda up the inside of the Ducati into the final corner, but ran wide and allowed Dovizioso to cut back past and hold on to the flag.
Valentino Rossi completed the podium behind the pair, less than a second behind Dovizioso at the end of what was an encouraging race for Yamaha, who were expected to struggle for pace this weekend.
The top five was completed by the LCR Honda of Cal Crutchlow and Danilo Petrucci for Pramac respectively.
Dani Pedrosa meanwhile rebounded from an average start to finish sixth ahead of Maverick Vinales, who ran as low as 14th early on, and the fading Johann Zarco’s Tech 3 Yamaha.
Rounding out the top ten was the Suzuki of Andrea Iannone and the Pramac GP17 of Jack Miller, the Aussie having a successful start to life on Ducati machinery.
Top rookie honours went to reigning Moto 2 champion Franco Morbidelli for Marc VDS, while fellow newcomer Hafizh Syahrin also took points for 14th.
Notable non-finishers were Jorge Lorenzo, who crashed out at turn four early on with suspected braking problems, while Alex Rins slid out of sixth place after pushing slightly too hard trying to make progress on the leaders.