Lewis Hamilton captured his fifth Hungarian Grand Prix victory to claim the lead in the 2016 Formula 1 world championship for the first time.
From second on the grid behind polesitting Mercedes team-mate Nico Rosberg, Hamilton took the lead into the first corner and controlled the race from there.
His fifth victory in six races means he has turned a 43-point deficit into a six-point lead in that time.
Rosberg had to settle for runner-up, 1.9 seconds behind, with Red Bull's Daniel Ricciardo just managing to hold off Sebastian Vettel's Ferrari for the final podium spot.
Ricciardo's team-mate Max Verstappen did the same to the other Ferrari of Kimi Raikkonen in a scrap so close the Finn clipped the Dutchman's car at one stage.
Neither Mercedes had made a supreme getaway from the front row and the Red Bulls both attacked.
Ricciardo nosed ahead around the outside but Hamilton kept both the Australian and Verstappen's inside line attack at bay. Rosberg then repassed Ricciardo around the outside of Turn 2.
At first the Red Bulls stayed close to the Mercedes, with Verstappen complaining he was "driving like a grandma" behind Ricciardo.
But he the main loser in the first round of stops, dropping behind Vettel as Ferrari used an undercut and also Raikkonen, who started 14th on softs and ran 29 laps in his first stint. The time spent behind the Finn left Verstappen out of the podium fight.
Just before the midway point Hamilton was warned by his team to pick up the pace otherwise Rosberg would pit first at the second round of stops to fend off the threat being posed by Ricciardo.
"I'm driving to the best of my ability," responded Hamilton, who then managed a surge to put 2.8s between himself and Rosberg.
It was enough for Hamilton to take precedence as another set of softs was fitted after 41 laps, with Rosberg following a lap later, and both stayed ahead of the early-stopping Ricciardo.
On lap 53 of 70, with Hamilton held up by the Haas of Esteban Gutierrez - earning the Mexican a middle-finger salute from the Briton when he finally passed and a five-second time penalty for ignoring blue flags - Rosberg closed to 0.6s.
Hamilton then edged away, only for the gap to fall to 0.6s again after 62 laps following a small lock-up at Turn 12, but it was as close as Rosberg managed to get.
Vettel steadily closed in on Ricciardo for third to no avail, while Raikkonen found himself chasing Verstappen as their alternate strategies played out, attacking repeatedly on fresh super-softs but ended up frustrated.
Behind the top six was McLaren's Fernando Alonso, followed by the Toro Rosso of Carlos Sainz Jr, Williams's Valtteri Bottas and Nico Hulkenberg for Force India.
McLaren's Jenson Button was the only retirement after a miserable race including an early loss of hydraulic pressure affecting his brakes, a drive-through penalty for unauthorised radio communication while addressing the problem and finally an oil leak.
RESULTS - 70 LAPS:
|3||Daniel Ricciardo||Red Bull/Renault||27.539s|
|5||Max Verstappen||Red Bull/Renault||48.659s|
|7||Fernando Alonso||McLaren/Honda||1 Lap|
|8||Carlos Sainz Jr.||Toro Rosso/Ferrari||1 Lap|
|9||Valtteri Bottas||Williams/Mercedes||1 Lap|
|10||Nico Hulkenberg||Force India/Mercedes||1 Lap|
|11||Sergio Perez||Force India/Mercedes||1 Lap|
|12||Jolyon Palmer||Renault||1 Lap|
|13||Esteban Gutierrez||Haas/Ferrari||1 Lap|
|14||Romain Grosjean||Haas/Ferrari||1 Lap|
|15||Kevin Magnussen||Renault||1 Lap|
|16||Daniil Kvyat||Toro Rosso/Ferrari||1 Lap|
|17||Felipe Nasr||Sauber/Ferrari||1 Lap|
|18||Felipe Massa||Williams/Mercedes||2 Laps|
|19||Pascal Wehrlein||Manor/Mercedes||2 Laps|
|20||Marcus Ericsson||Sauber/Ferrari||2 Laps|
|21||Rio Haryanto||Manor/Mercedes||2 Laps|
|-||Jenson Button||McLaren/Honda||Oil leak|
|10||Carlos Sainz Jr.||30|