Sebastian Vettel has won a tense Hungarian Grand Prix on Sunday in a Ferrari one-two that stretches his championship lead to 14 points.
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 Vettel, who had to wrestle with a skewed steering wheel on a sweltering afternoon at the Hungaroring and had no room for error.
Lewis 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.
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."
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.