Lewis Hamilton moved into the championship lead for the first time this season with a close victory over Nico Rosberg.
Starting from second on the grid, Hamilton beat Rosberg off the line to lead into Turn 1, with his team-mate dropping to third momentarily before passing Daniel Ricciardo around the outside of Turn 2. From then on, the two Mercedes drivers were closely matched, with the gap less than two seconds for the majority of the race.
A late mistake from Hamilton saw Rosberg within 0.6s with eight laps remaining but the German failed to take advantage and had to settle for second place.
Ricciardo came home third after late pressure from Sebastian Vettel, but he was over 20 seconds adrift at the chequered flag having keep the Mercedes pair honest for the first stint of the race. Max Verstappen was fifth ahead of Kimi Raikkonen, with the pair colliding in the closing stages.
Fernando Alonso scored good points for McLaren in seventh ahead of Carlos Sainz, Valtteri Bottas and Nico Hulkenberg.
With Hamilton taking the lead at the start, Rosberg did well to regain second position from Ricciardo around the outside of Turn 2 having been squeezed at the opening corner. Hamilton looked comfortable in the opening stint but it was the switch to soft tyres which suggested the race was not going to be an easy one for the defending champion.
Complaining of a lack of pace on the softs, Hamilton saw Rosberg close to within a second and had Ricciardo and Vettel closing in at the same stage. Ricciardo pit early from third place to try and force Mercedes' hand, but the leaders didn't respond and Ricciardo had to complete a long final stint on soft tyres.
Hamilton again went through phases of struggling in the final stint, with Rosberg rapidly closing a gap of over six seconds to get within a second once again after the last pit stops. Hamilton also lost time behind Esteban Gutierrez - who was penalised for ignoring blue flags - and raised his middle finger as he finally overtook the Haas.
Hamilton then ran wide at Turn 12 and Rosberg was right behind his team-mate but failed to make a serious move and had to be content with second place.
Ricciardo's early final stop forced him into a defensive closing stint as Vettel shadowed the Red Bull, but at no stage was the four-time world champion able to attack on a circuit known to be difficult for overtaking.
Raikkonen's drive was an impressive one as he started from 14th place, but it promised so much more after his last pit stop. The Finn ran long on the soft tyres and emerged in seventh place after his first change to supersoft tyres, quickly dispatching Alonso to move up to sixth. His final stint was also on supersofts and saw him three seconds quicker than those ahead of him when he emerged from the pits, putting him in podium contention.
Verstappen was nine seconds behind Vettel at that stage but Raikkonen failed to use the tyre advantage to pass the Dutch driver, just as he had struggled in both Spain and Austria. With 14 laps remaining, Raikkonen feinted to the outside approaching Turn 2 but as he switched to the inside Verstappen also moved and the Ferrari's front wing was damaged against the right rear of the Red Bull as he took avoiding action.
Raikkonen complained over team radio but there was no investigation, and the damage made following even harder, eventually crossing the line 0.3s behind Verstappen. It was a crucial result for Red Bull to hold off Ferrari as it saw the gap between the two in the constructors' championship close to just one point.
Alonso was lapped as he came home a distant seventh, with his start proving crucial as he jumped Sainz on the opening lap. While the Spaniard enjoyed a relatively smooth run to the flag - bar a warning for exceeding track limits on three occasions - his team-mate Jenson Button had a race to forget.
The Briton was running competitively when he complained "the pedal is going to the floor" on team radio and was forced to slow. Button was then told not to shift from fourth gear, but did not immediately pit. As he resumed racing speed Button came into the pits a lap later but was hit with a drive-through penalty for unauthorised radio communications.
As he tried to recover from the back of the field, Button had made little progress when an oil leak caused him to retire ten laps from the end of the race.
Button's countryman Jolyon Palmer will also be rueing a missed opportunity after moving into the points with an impressive first half of the race, only to spin at Turn 4. Palmer eventually crossed the line in 12th place but missed a golden opportunity to score his first points in F1.
Hamilton who took his chance though, with his victory giving him a six-point lead over Rosberg, while Ricciardo moves up to third in the standings.
|01||Lewis Hamilton||Mercedes||70 laps - 1h40m30.115s||2|
|02||Nico Rosberg||Mercedes||+ 1.977||2|
|03||Daniel Ricciardo||Red Bull||+ 27.539||2|
|04||Sebastian Vettel||Ferrari||+ 28.213||2|
|05||Max Verstappen||Red Bull||+ 48.659||2|
|06||Kimi Räikkönen||Ferrari||+ 49.044||2|
|07||Fernando Alonso||McLaren||+ 1 lap||2|
|08||Carlos Sainz||Toro Rosso||+ 1 lap||2|
|09||Valtteri Bottas||Williams||+ 1 lap||2|
|10||Nico Hülkenberg||Force India||+ 1 lap||2|
|11||Sergio Pérez||Force India||+ 1 lap||2|
|12||Jolyon Palmer||Renault||+ 1 lap||2|
|13||Esteban Gutiérrez||Haas||+ 1 lap||2|
|14||Romain Grosjean||Haas||+ 1 lap||2|
|15||Kevin Magnussen||Renault||+ 1 lap||2|
|16||Daniil Kvyat||Toro Rosso||+ 1 lap||2|
|17||Felipe Nasr||Sauber||+ 1 lap||2|
|18||Felipe Massa||Williams||+ 2 laps||2|
|19||Pascal Wehrlein||Manor||+ 2 laps||2|
|20||Marcus Ericsson||Sauber||+ 2 laps||3|
|21||Rio Haryanto||Manor||+ 2 laps||1|