Budapest - Sebastian Vettel won a tense Hungarian Grand Prix on Sunday in a Ferrari one-two that stretched his championship lead to 14 points after Mercedes rival Lewis Hamilton sportingly surrendered third place to his team-mate.
The German, savouring his fourth win of the season and 46th of his Formula One career, took the chequered flag 0.9 seconds ahead of team-mate Kimi Raikkonen.
The Finn had looked faster than Vettel for most of the afternoon.
"I'm over the moon, that was a really difficult race," said the winner, who had to wrestle with a skewed steering wheel on a sweltering afternoon at the Hungaroring and had no room for error.
Hamilton finished fourth after slowing down on the last lap and allowing Finnish team-mate Valtteri Bottas to go past, despite the loss of vital points to the Briton's championship challenge.
Man of his word
Bottas had let Hamilton through on the 45th of the 70 laps, on the assurance that his team-mate would hand back the place if he could not overtake the Ferraris, and the triple champion duly kept his word.
"Really thanks to Lewis for keeping the promise in the end and letting me by," said Bottas.
"I don't think every team-mate would have swapped back."
Hamilton, whose radio was malfunctioning for some of the race and would have had more of a chance had he got past Bottas earlier, said he had done what he had to do.
"It's tough in the championship but I'm a man of my word," he said. "I did say that if I can't overtake them I would let him back through."
Penalty for 'amateur' Verstappen
On a circuit where overtaking is notoriously hard, the top five all finished in their starting order with Max Verstappen fifth for Red Bull.
The Dutch teenager was handed a 10 second stop and go penalty for colliding with his Australian team mate Daniel Ricciardo on the opening lap.
The impact ended Ricciardo's race, with the car stranded on the track and fluid leaking from the broken radiator, and brought out the safety car.
"It’s not on. It was amateur to say the least. It’s not like he was trying to pass - there was no room to pass," said an angry Ricciardo.
"I don’t think he likes it when a team-mate gets in front. You’ve got the whole race to try and repair the mistake but the pass was never on. It wasn’t even a pass, it was a very poor mistake."
McLaren's best result of the season
Fernando Alonso, who celebrated his 36th birthday on Saturday, gave struggling McLaren their best finish of the season so far by taking sixth place and also setting the fastest lap of the race.
Belgian team-mate Stoffel Vandoorne was 10th in a double points finish for the former champions, who moved off the bottom of the table and ahead of Sauber.
Spaniard Carlos Sainz was seventh for Toro Rosso with Mexican Sergio Perez eighth and Force India team mate Esteban Ocon ninth.
Britain's Paul di Resta, replacing unwell Brazilian Felipe Massa at Williams, retired.
The last Ferrari driver to win from pole position in Hungary was Vettel's compatriot Michael Schumacher, who was dominant in 2004 and went on to win his seventh and last championship that season.
Hungary was the last race before the August break, with nine of the 21 rounds remaining.
HUNGARIAN GRAND PRIX RESULTS
1. Sebastian Vettel (Germany) Ferrari 1:39:46.713
2. Kimi Raikkonen (Finland) Ferrari +00:00.908
3. Valtteri Bottas (Finland) Mercedes 00:12.462
4. Lewis Hamilton (Britain) Mercedes 00:12.885
5. Max Verstappen (Netherlands) Red Bull - TAG Heuer 00:13.276
6. Fernando Alonso (Spain) McLaren 01:11.223
7. Carlos Sainz Jr (Spain) Toro Rosso - Renault 1 lap
8. Sergio Perez (Mexico) Force India - Mercedes 1 lap
9. Esteban Ocon (France) Force India - Mercedes 1 lap
10. Stoffel Vandoorne (Belgium) McLaren 1 lap
11. Daniil Kvyat (Russia) Toro Rosso - Renault 1 lap
12. Jolyon Palmer (Britain) Renault 1 lap
13. Kevin Magnussen (Denmark) Haas - Ferrari 1 lap
14. Lance Stroll (Canada) Williams-Mercedes 1 lap
15. Pascal Wehrlein (Germany) Sauber - Ferrari 2 laps
16. Marcus Ericsson (Sweden) Sauber - Ferrari 2 laps
Nico Huelkenberg (Germany) Renault 3 laps
Paul Di Resta (Britain) Williams-Mercedes 10 laps
Romain Grosjean (France) Haas - Ferrari 50 laps
Daniel Ricciardo (Australia) Red Bull - TAG Heuer 70 laps
Fernando Alonso,1:20.182, lap 69
1. Sebastian Vettel (Germany) Ferrari 202
2. Lewis Hamilton (Britain) Mercedes 188
3. Valtteri Bottas (Finland) Mercedes 169
4. Daniel Ricciardo (Australia) Red Bull 117
5. Kimi Raikkonen (Finland) Ferrari 116
6. Max Verstappen (Netherlands) Red Bull 67
7. Sergio Perez (Mexico) Force India 56
8. Esteban Ocon (France) Force India 45
9. Carlos Sainz Jr (Spain) Toro Rosso 35
10. Nico Huelkenberg (Germany) Renault 26
11. Felipe Massa (Brazil) Williams 23
12. Lance Stroll (Canada) Williams 18
13. Romain Grosjean (France) Haas 18
14. Kevin Magnussen (Denmark) Haas 11
15. Fernando Alonso (Spain) McLaren 10
16. Pascal Wehrlein (Germany) Sauber 5
17. Daniil Kvyat (Russia) Toro Rosso 4
18. Stoffel Vandoorne (Belgium) McLaren 1
19. Jolyon Palmer (Britain) Renault 0
20. Marcus Ericsson (Sweden) Sauber 0
21. Antonio Giovinazzi (Italy) Sauber 0
22. Paul Di Resta (Britain) Williams 0
1. Mercedes 357
2. Ferrari 318
3. Red Bull - TAG Heuer 184
4. Force India - Mercedes 101
5. Williams-Mercedes 41
6. Toro Rosso - Renault 39
7. Haas - Ferrari 29
8. Renault 26
9. McLaren 11
10. Sauber - Ferrari 5