Alex Marquez notched up his fourth win of 2019 in the German GP at the Sachsenring, ahead of Brad Binder.
Marquez, who started from pole, made a poor start and slipped back to fifth on the run to Turn 1, but quickly looked to make up lost ground.
He efficiently dispatched the riders in front of him, taking the lead from Iker Lecuona at Turn 1 just a few laps into the 28-lap race.
The Marc VDS pilot looked set to come under pressure from the blistering Binder, who had made a rapid start from 17th on the grid to hold fifth after just a couple of laps.
The South African moved into second at around a thirds distance, and looked set to challenge Marquez for the lead.
He was unable to make an impression however, and Marquez soon began to build his advantage while the Ajo KTM man had to turn his attention to the chasing Lecuona and Marcel Schrotter.
Marquez was the model of consistency out in front, building a lead that at one point stood at 3.2 seconds. He backed off in the closing laps to cross the line around a second clear of Binder, who had seen off the advances of Schrotter to secure second.
Lecuona looked to try and snatch third from the Intact GP rider at the final corner on the last lap, but tucked the front as he entered the turn, sliding into the gravel out of fourth.
The Spaniard's retirement gifted the position to Fabio Di Gianantonio, who scored his best ever Moto2 result for the Speed Up squad, while Tom Luthi took fifth despite a long-lap penalty.
The Swiss took out Xavi Vierge into Turn 1 as he ran wide, forcing the Marc VDS rider into the gravel and out of the race.
Luthi dropped just one position following his penalty, to Di Gianantonio, and held off a charging Augusto Fernandez to close out the top five finishers.
The Assen Moto2 winner therefore had to make do with sixth ahead of Pons team-mate Lorenzo Baldassarri, with the second Speed Up of Jorge Navarro taking eighth at the flag.
Jorge Martin managed his own best ever intermediate class result in ninth on the second of the Ajo KTM machines, while front-row starter and early leader Luca Marini struggled for speed and slipped to tenth by the end of the race for the VR46 team.
Marquez’s victory means he now re-gains the championship lead he lost after he was taken out in the previous round at Assen, now leading Luthi by eight points heading into the summer break.