It was Valentino Rossi of Movistar Yamaha MotoGP, who took the holeshot from second on the grid, with polesitter Dovizioso just losing out and shuffled back a place as Marquez retained his P3 through the first corner.
Lorenzo wasn't able to make a move from the second row and settled into fourth, with drama then hitting the early stages as a multi-rider incident saw Maverick Vinales (Movistar Yamaha MotoGP), Bradley Smith (Red Bull KTM Factory Racing) and wildcard Stefan Bradl (HRC Honda Team) crash out.
At the front
At the front ‘DesmoDovi' was quick to strike for the lead and he and Rossi dueled it out, but it was the 04 Ducati ahead over the line.
Marquez then began to attack Rossi, before Lorenzo struck instead and picked the pocket of the number 93. Dovi led Rossi led Lorenzo led Marquez and it seemed it could be in for another Dutch GP battle royal - but that wasn't to become the story of the race.
Marquez attacked Lorenzo at Turn 4 as the duel began, but the ‘Spartan' hit back with a stunner into Turn 6 that sat up the reigning Champion.
With Dovizioso then with a bit of margin at the front, the number 99 Ducati threw everything at it to chase down his team-mate - but through the final corner neither was just close enough for that final attack.
That made it an impressive second win of the season for Dovizioso and his first at Brno, with Lorenzo second and Marquez completing the podium on his 100th MotoGPTM start.
The fight wasn't over, however. Just behind the breathless battle for the lead, another duel was lighting up the final lap, and it was Rossi who was able to pick the pocket of Crutchlow and beat the Brit to the line by just hundredths - taking the rider from Tavullia over the 6000 career points mark 22 years after his first ever GP win taken at Brno.