Brno - Italian Andrea Dovizioso celebrated his 100th race for Ducati by holding off team-mate Jorge Lorenzo to claim his second win of the season at the Czech MotoGP in Brno on Sunday.
Dovizioso had the Spaniard 0.178sec behind him at the line with defending world champion and series leader Marc Marquez (Honda) third at 0.368.
Italian veteran Valentino Rossi (Yamaha) finished fourth at nearly three seconds behind after enjoying a strong start from second in the grid behind Dovizioso.
Dovizioso, 32, started on pole position for the first time since 2016.
By the end of a thrilling race held in sweltering temperatures, Dovizioso handed Ducati their first win in Brno since Australian Casey Stoner in 2007.
Notably missing from the top five finishers during the past five editions in Brno, Dovizioso capitalised on his strong start to stay at the head of the pack for most of his near 42-minute spell on the circuit.
At first put under pressure by Rossi before the Italian veteran dropped off the pace, Dovizioso kept his composure during the crucial, final laps where he held firm to keep challenges by Lorenzo and Marquez at bay.
"I really didn't expect to be so fast today," said Dovizioso, who also claimed victory in the season-opener at Qatar.
"I'm very happy for the whole team."
Marquez's third place means he remains top of the standings on 181 points and a 49-point lead on Rossi and 68 on Dovizioso.
"It's good," said Marquez. "I need to finish all the races now, this is the key."
He added: "I was happy with my speed, I could follow Dovey ... but the problem is fighting against the Ducati guys. They have such a strong acceleration."
Portugal's Miguel Oliveira, on a KTM, claimed his second win of the season to take command of the Moto 2 series lead.
Oliveira started from fourth on the grid but after a thrilling duel with Luca Marini (Kalex), who started on pole, the Portuguese got his nose over the finish line to beat the Italian by just 0.070secs.
Another Italian, Francesco Bagnaia (Kalex), was third at 0.525.
In the Moto 3 category, Italian Fabio Di Giannantonio, riding a Honda, held off Spaniard Aron Canet to claim his maiden professional win.
Di Giannantonio, 19, started fifth "but pushed his bike all the way" on his way to beating teammate Canet by 0.112sec.
Czech racer Jakub Kornfeil (KTM), who had started on pole, finished third.
Italian Marco Bezzecchi (KTM), who finished sixth, now leads the standings after 10 races with a three-point lead on Spain's Jorge Martin, who pulled out on Friday due to a fracture in his left hand.
Collated leading results from the Czech motorcycling Grand Prix, the 10th leg of the world championship, held on the Brno circuit on Sunday:
1. Andrea Dovizioso (ITA/Ducati) 41min 07.728sec, 2. Jorge Lorenzo (ESP/Ducati) at 0.178sec, 3. Marc Marquez (ESP/Honda) 0.368, 4. Valentino Rossi (ITA/Yamaha) 2.902, 5. Cal Crutchlow (GBR/LCR Honda) 2.958, 6. Danilo Petrucci (ITA/Ducati Pramac) 3.768, 7. Johann Zarco (FRA/Yamaha Tech3) 6.159, 8. Dani Pedrosa (ESP/Honda) 7.479, 9. Alvaro Bautista (ESP/Ducati) 7.575, 10. Andrea Iannone (ITA/Suzuki) 8.326
1. Marc Marquez (ESP/Honda) 181 points, 2. Valentino Rossi (ITA/Yamaha) 132, 3. Andrea Dovizioso (ITA/Ducati) 113, 4. Maverick Vinales (ESP/Yamaha) 109, 5. Jorge Lorenzo (ESP/Ducati) 105, 6. Johann Zarco (FRA/Yamaha Tech3) 97, 7. Danilo Petrucci (ITA/Ducati Pramac) 94, 8. Cal Crutchlow (GBR/LCR Honda) 90, 9. Andrea Iannone (ITA/Suzuki) 81, 10. Jack Miller (AUS/Ducati Pramac) 61
1. Miguel Oliveira (POR/KTM) 39min 22.324sec, 2. Luca Marini (ITA/Kalex) at 0.070sec, 3. Francesco Bagnaia (ITA/Kalex) 0.525
Moto 2 standings (after 10 of 19 races)
1. Miguel Oliveira (POR/KTM) 166 pts, 2. Francesco Bagnaia (ITA/Kalex) 164, 3. Alex Marquez (ESP/Kalex) 113
1. Fabio Di Giannantonio (ITA/Honda) 39min 09.124sec, 2. Aron Canet (ESP/Honda) at 0.112sec, 3. Jakub Kornfeil (CZE/KTM) 0.339
Moto 3 standings (after 10 races)
1. Marco Bezzecchi (ITA/KTM) 133 pts, 2. Jorge Martin (ESP/Honda) 130, 3. Fabio Di Giannantonio (ITA/Honda) 116