Team mate Hamilton withstood massive pressure from both Ferraris at different stages in the race to complete a McLaren one-two, ahead of Kimi Raikkonen.
Pole sitter Felipe Massa was quickly dispatched by the McLarens and even lost out to Nick Heidfeld by the end of the race.
With rain having fallen overnight most drivers started on the soft compound tyres.
When the lights went out the start belonged to the McLarens – Fernando Alonso nosed past Felipe Massa while, behind him, Lewis Hamilton was weaving the same magic he had in Australia.
He braked later and deeper than Kimi Raikkonen into the first corner, and drew alongside Massa as the Brazilian hung wide of the apex at the long right-hander. This put Hamilton on the outside for the tight second bend – and he sliced past Massa into second.
Behind him the start was less orderly, with Adrian Sutil’s Spyker clipping Jenson Button as he disappeared into the gravel and out of his second race.
Team mate Christijan Albers would join him in retirement six laps later, when the Ferrari engine in his Spyker began belching smoke.
Meanwhile Hamilton was having to employ his full range of defensive skills against Massa. But however the Ferrari driver came at him, Hamilton positioned the McLaren perfectly.
Massa got down the inside of Hamilton into Langkawi on lap three, but slithered wide with a flash of oversteer, and Hamilton nipped back ahead. Raikkonen took a quick look at his team mate, but held back.
The Brazilian tried the same again on lap five after Hamilton struggled to get the power down exiting the second turn. But this time Massa went off the circuit completely and fell to fifth behind Nick Heidfeld.
Alexander Wurz was having more success with his overtaking efforts. Having vaulted up from 20th to 16th at the start, he then passed Anthony Davidson, Scott Speed, Ralf Schumacher and David Coulthard to take 11th by lap 17.
He’s also profitted from Kubica’s early pit stop on lap 12 due to a faulty wheel sensor.
Wurz then came in on lap 17 along with Massa. On the next lap leader Alonso did likewise having built up a lead over 13 seconds.
Raikkonen came in too but his in-lap was compromised by traffic, and he rejoined the track behind Giancarlo Fisichella. As a result when Hamilton pitted (taking a front wing adjustment) he resumed comfortably clear of the pair of them.
Rosberg pitted on lap 19 having run a solid sixth. He, like all the other drivers that had pitted so far, remained on soft tyres.
The pit stops left Heidfeld in the lead, 3.5s ahead of Alonso, before his stop on lap 21. Hamilton’s car tweaks helped him set the fastest lap of the race thus far on lap 22.
Having started outside the top ten the Renaults had fuelled heavily and gotten into the top six before their pit stops. Heikki Kovalainen pitted on lap 22 and Fisichella on the next lap, and the world champions’ cars fell to tenth and eighth respectively.
A tight battle had developed at the back of the field, with Barrichello, Schumacher, Button, Speed, Sato and Davidson covered by less than four seconds covering the gaggle from 14th to 19th.
By lap 25 Alonso led Hamilton who had ten seconds on Raikkonen. Heidfeld still ran ahead of Massa and Rosberg was still sixth ahead of Coulthard (the only driver yet to make his first stop). Fisichella led Trulli and Kovalainen. Just outside the top ten was Wurz on the long haul up from the back of the grid.
Coulthard’s stop on lap 26 dropped him to 12th behind team mate Mark Webber.
Hamilton clearly had a quicker car underneath him during the second stint as he nibbled away at Alonso’s lead (down to 8.4s on lap 29) and putting air between him and Raikkonen.
He was aided in his pursuit of Alonso by the fact that his team mate’s radio had stopped working during the first stint – just as Raikkonen’s had in Melbourne!
Now tucked up behind Kovalainen, Wurz made an early second stop on lap 34. Barrichello, Speed and Speed also took the opportunity to dive out of the train at the back of the field.
Coulthard joined the Spykers in retirement on lap 37 with brake problems having been running 11th.
Hamilton was first of the leaders to make his second stop on lap 38 – switching onto the harder tyres. He resumed fifth behind Massa, who still hadn’t got past Heidfeld.
Alonso arrived on pit lane on lap 40 to make his switch to hard tyres. Having led Raikkonen by 22s he resumed shortly behind the Ferrari.
Massa came in straight after Alonso which suggested the Ferraris hadn’t fuelled much longer than the McLarens – a view confirmed by Raikkonen’s stop on the next lap.
Alonso’s advantage over Hamilton had stretched to 11 seconds over the pit stops and Alonso turned the screw further with the fastest second sector of the race following his stop.
Hamilton continued to struggle for pace on the harder tyres as Raikkonen started to draw in the McLaren driver at up to a second per lap.
Having made a late first stop Heidfeld might well have run longer than lap 43, but the BMW brought him in and, crucially, got him back out ahead of Massa.
Rosberg’s excellent drive for Williams came to a disappointing end on lap 44 with smoke billowing from the rear of the car.
Webber, tenth, had saved his soft tyres for the last stint and was using them to put pressure on Wurz. Up front the pressure was decidedly on Hamilton, who with ten laps to go had just 5.6s on Raikkonen.
Kubica’s difficult race got worse on lap 47 when he pirouetted off the circuit at the Klia curve. He resumed 18th and last.
As the laps ticked away Raikkonen remorselessly drew in Hamilton, taking around half a second off the McLaren on each lap. With six laps to go, the gap was down to 3.3s.
Massa too was less than a second behind Heidfeld but still didn’t look capable of passing the BMW.
As the final lap began Raikkonen had the gap down to 0.8s but Hamilton tenaciously clung on to second place – the Finn never getting a chance to make a passing move.
Alonso took the win with a comfortable margin in his second race for McLaren, with Hamilton and Raikkonen behind him. Heidfeld rebuffed Massa’s advances as the Ferrari driver ran wide at the last corner late in the race.
From twelfth on the grid, Fisichella drove a steady race to sixth, just ahead of Trulli. Kovalainen scored his first world championship point with eighth.
Just outside of the points was Wurz, having battled up from 20th, ahead of Webber, the last driver not to be lapped.
The Hondas of Barrichello and Button were a lap down in 11th and 12th ahead of Sato and Speed. Ralf Schumacher slumped from his high starting position to finish 15th with Davidson, Liuzzi and the unfortunate Kubica behind him.