Red Bull's Sebastian Vettel ignored team orders in the Malaysian GP to win an intense battle with Mark Webber.
Webber led after the final pit stops and the drivers were told to hold position to the end of the race but Vettel passed Webber after a tussle with 13 laps to go.
Vettel has since apologised for the incident.
Lewis Hamilton took third ahead of Mercedes team-mate Nico Rosberg, who obeyed an order to stay behind.
Ferrari's Fernando Alonso crashed on the second lap after breaking his front wing.
The Spaniard's team-mate Felipe Massa took fifth, fighting past the Lotus cars of Romain Grosjean and Kimi Raikkonen in the closing laps after the Lotus team's gamble to try to do only three pit stops rather than four failed.
Grosjean finished sixth ahead of Raikkonen, who won the first race in Australia last weekend.
McLaren's Jenson Button was on for a points-scoring finish, possibly in fifth place, before he was sent on his way from a pit stop with a loose front wheel.
The Sauber of Nico Hulkenberg took eighth ahead of McLaren's Sergio Perez, with Toro Rosso's Jean-Eric Vergne 10th.
It was a race full of drama as the intra-team battles at Red Bull and Mercedes played out live.
The battle between the Red Bulls was resolved in an intense scrap as Webber rejoined from his final pit stop.
Vettel was warned by team boss Christian Horner that he was being "silly" but the two then battled wheel-to-wheel around Turns One and Two onto Turn Four, where Webber appeared finally to yield to his team-mate despite having the inside line.
Webber said: "After the last stop the team told me the race was over and we turned the engines down and go to the end. The team made their decision. Seb made his own decision and he will have protection as usual."
Vettel was told over the radio after the race: "Good job, Seb. Looks like you wanted it bad enough. Still you've got some explaining to do."
Webber had initially taken the lead at the first stops as the drivers came in to fit dry-weather tyres following a wet start.
He had led the race throughout, with the two Red Bull drivers using the two available tyre compounds in different orders.
Vettel chose to end the race on the softer 'medium' tyre while Webber was on the hard.
Vettel said: "Obviously it is very hot and if there is something to say we need to say it internally."
Red Bull motorsport chief Helmut Marko, a powerful champion of Vettel, admitted the battle had "got out of control".
Meanwhile, there was controversy at Mercedes as Rosberg followed Hamilton closely in the final laps.
Rosberg asked the team to let him pass Hamilton, but was told "negative" by team boss Ross Brawn.
When he complained again, Brawn told him that Hamilton - who had earlier been told to save fuel - was also being "controlled" and could also go faster.
Hamilton admitted on the podium: "I can't say it's the best feeling being up here today. If I'm honest I really feel Nico should be standing here."
Hamilton had provided an amusing diversion when, coming in for his second stop, he headed into the pit box of former team McLaren before being waved on towards Mercedes.
"I did a Jenson," he said. "He did it a couple of years ago and I've done it today. Apologies to my team."
The result puts Vettel into the championship lead by 11 points from Raikkonen. Webber is five points further adrift and ahead of Hamilton, Massa and Alonso, who is already 22 points behind Vettel, the man who narrowly beat him to the title 2010 and 2012.
Alonso started third and was up to second, past Massa, by the first corner. But he tapped the back of Vettel's car in Turn Two.
It was the lightest of touches but enough to break the front wing mounts.
He held onto second place throughout the first lap but did not stop to change it and it collapsed heading into Turn One on the second lap, sending him into the gravel trap. Ferrari said the decision not to stop was made in the pits.
Alonso wrote later on Twitter: "Bad luck today. As always over 19 races we will be compensated and we are ready to recover good points in the next race."
1. Sebastian Vettel (Ger), Red Bull, 1hr 38min 56.681secs
2. Mark Webber (Aus), Red Bull, 1:39:00.979
3. Lewis Hamilton (GB), Mercedes, 1:39:08.862
4. Nico Rosberg (Ger), Mercedes, 1:39:09.321
5. Felipe Massa (Brz), Ferrari, 1:39:22.329
6. Romain Grosjean (Fra), Lotus, 1:39:32.245
7. Kimi Raikkonen (Fin), Lotus, 1:39:45.160
8. Nico Hulkenberg (Ger), Sauber, 1:39:49.725
9. Sergio Perez (Mex), McLaren, 1:40:09.038
10. Jean-Eric Vergne (Fra), Toro Rosso, 1:40:23.805
11. Valtteri Bottas (Fin), Williams, 1:40:25.291
12. Esteban Gutierrez (Mex), Sauber, 1:39:01.194
13. Jules Bianchi (Fra), Marussia, 1:39:55.128
14. Charles Pic (Fra), Caterham, 1.40:29.370
15. Giedo van der Garde (Ned), Caterham, 1:40:38.354
16. Max Chilton (GB), Marussia, 1:39:14.486
17. Jenson Button (GB), McLaren, 1:35:35.060
18. Daniel Ricciardo (Aus), Toro Rosso, 1:32:16.617
Did not finish
Pastor Maldonado (Ven), Williams, 45 laps.
Adrian Sutil (Ger), Force India, 27 laps.
Paul di Resta (GB), Force India, 22 laps.
Fernando Alonso (Spa), Ferrari, 1 lap.