Fernando Alonso has won the Singapore Grand Prix at the Marina Bay circuit after leading from the first corner to the chequered flag.
Sebastian Vettel, who finished second, appeared to have the quicker car for portions of the race, but was unable to pass either on the circuit or during the pitstops.
Championship leader Mark Webber finished third, Jenson Button was fourth, but Lewis Hamilton failed to finish for the second race in a row, after tangling with Webber after a safety-car period.
Vettel got the best start from second place on the grid, but backed off when Alonso started to move across to cover the inside of the first corner.
Out of the first three corners, the order of the top five remained the same as on the grid: Alonso leading Vettel, Hamilton, Button and Webber.
The safety car was brought out at the end of the first lap because Vitantonio Liuzzi had stopped on the circuit.
Webber decided to pit and change tyres at this stage, dropping back down the order, but later on in the race his pace began to improve.
In fact the Australian was able to leapfrog both McLarens when they pitted. Alonso and Vettel pitted together, reacting to the flurry of stops behind them, and emerged in the same order.
Vettel looked much quicker immediately after the stop, but before he could mount a challenge, the safety car was out again because Kamui Kobayashi and Bruno Senna had crashed into the barriers at turn 18.
At the restart, backmarkers slowed Webber allowing Hamilton to get alongside the Red Bull driver into turn seven. He was never far enough ahead of the Australian, however, and they collided at the apex.
Hamilton was out with damaged rear suspension on the spot, but Webber was able to continue, albeit with a very damaged front right tyre.
Up front Alonso had it under control to the chequered flag, despite Vettel's rapid pace, and the win means he jumps to second in the championship.
Nico Rosberg in the Mercedes finished fifth and Rubens Barrichello drove an impressive race in the Williams to finish sixth.
Robert Kubica, Adrian Sutil, Nico Hulkenberg and Felipe Massa completed the points paying positions in seventh, eighth, ninth and tenth respectively.
Official race results
Marina Bay Circuit, Singapore; 61 laps; 309.087km