Daniel Ricciardo made the most of Nico Rosberg's blip to claim back-to-back victories with Rosberg finishing second and Valtteri Bottas completing the podium.
In the bigger scheme of things Rosberg increased his lead in the standings to 29 points, but he will have some explaining to do after taking out his Mercedes team-mate Lewis Hamilton early in the race.
Having won last time out in Hungary, Ricciardo admitted after qualifying on Saturday that he was keeping his fingers crossed for Mercedes problems and he got his wish as it all went wrong for pole-sitter Rosberg in the opening few laps as both Hamilton and Red Bull's Sebastian Vettel were quicker off the line and forced him into third.
Vettel ran wide and that allowed Rosberg to move up to P2 and challenge his team-mate for P1, but things went downhill for the German as he touched Hamilton's left rear, forcing the Brit to make a pit stop for a punctured and that opened the way for Ricciardo to take the lead.
Rosberg also suffered damage and required a new front wing that saw him slip down the order, but instead of dropping his head he fought back and picked off the likes of Fernando Alonso, Vettel, Kimi Raikkonen and Bottas.
Despite a late stop, Rosberg's Mercedes car was simply too powerful and again he eased past the likes of Bottas and Raikkonen, but Ricciardo put the foot down and held him off to take the win by 3.3s.
The fight for the final podium position ended up between the two Finns and Bottas once again proved his credentials as a future star as he got the better of his compatriot with four laps to go to take P3.
Raikkonen, though, managed to get his best position of the season and also finished ahead of Ferrari team-mate Fernando Alonso for the first time this campaign with the Spaniard down in eighth.
Alonso had to recover from a five-second stop-go penalty, which he received after his car stalled briefly on the formation lap, but he recovered only to make contact with Kevin Magnussen in the final few laps and drop back to eighth.
Alonso, Vettel, Magnussen and Jenson Button were all involved in a late scrap and Vettel was the man to finish fifth while Magnussen held off his McLaren team-mate Button with Alonso P8.
Sergio Perez and Daniil Kvyat completed the top 10 while Hamilton retired late in the race with Mercedes opting to save his engine. Jules Bianchi, Romain Grosjean, Pastor Maldonado and Andre Lotterer also failed to see the chequered flag with the latter's maiden F1 race lasting only three laps before his Caterham suffered a mechanical problem.
01 Daniel Ricciardo Red Bull 1:24.36.556
02 Nico Rosberg Mercedes +3.300s
03 Valtteri Bottas Williams +27.9s
04 Kimi Raikkonen Ferrari+36.5s
05 Sebastian Vettel Red Bull +51.8s
06 Kevin Magnussen McLaren +53.8s
07 Jenson Button McLaren +54.0s
08 Fernando Alonso Ferrari +60.5s
09 Sergio Perez Force India +63.6s
10 Daniil Kvyat Toro Rosso +64.6s
11 Nico Hulkenberg Force India +64.8s
12 Jean-Eric Vergne Toro Rosso +71.0s
13 Felipe Massa Williams +75.0s
14 Adrian Sutil Sauber +81.4s
15 Esteban Gutierrez Sauber +89.7s
16 Max Chilton Marussia +1 lap
17 Marcus Ericsson Caterham +1 lap
Andre Lotterer Caterham
Lewis Hamiliton Mercedes
Jules Bianchi Marussia
Romain Grosjean Lotus Related link
It's Go, Go, Go At Glorious Spa