Kimi Raikkonen claimed a lights-to-flag victory in the Monaco Grand Prix for his second successive win this season.
The Finn beat Williams' Nick Heidfeld and Mark Webber into second and third.
Heidfeld took second with seven laps remaining when he passed Renault's championship leader Fernando Alonso, who was passed moments later by Webber.
Ferrari's Michael Schumacher showed searing pace but was seventh after an incident-packed race. David Coulthard retired on lap 25 after a five-car jam.
Afterwards race winner Raikkonen said: "A few years ago I came close to winning but couldn't get past Montoya.
"This time I did it and I'm very happy because it's such a special place."
The Finn started alongside Alonso on the grid but got away the better of the two. After a steady first few laps, he upped the tempo to pull well clear of his Spanish rival.
But the race changed dramatically on lap 24 when Minardi driver Christijan Albers spun causing a pile-up behind him.
David Coulthard had no choice but to come to an abrupt halt, with an unsighted Michael Schumacher ploughing into the Scot and ending his race.
Rubens Barrichello and Juan Pablo Montoya were among the other drivers caught up in the resulting melee.
Schumacher, though, rejoined the race after replacing his nose cone as the safety car was employed to clear the track.
Despite carrying a heavier fuel load, he was able to keep pace with Raikkonen, suggesting that for a similar fuel load the Ferrari was nearly a second a lap faster than the McLaren.
Had Schumacher been able to unleash that pace from a position near the front of the grid, in the mix with Raikkonen and the Renault drivers, that speed would have made him a major contender for victory.
But the lack of pace of Bridgestone's tyres in qualifying again let the red cars down.
Renault pair Alonso and Giancarlo Fisichella also opted to come in for their only pit stop of the race at the same time.
As a result, they both struggled late in the race, with the heavy fuel load causing the rear tyres to wear more rapidly.
Alonso held off the double Williams attack of Heidfeld and Webber for as long as possible, until Heidfeld found a way through coming out of the tunnel on lap 71.
Webber twice tried his luck on the ensuing laps and finally passed to put two Williams drivers on the podium.
Webber added: "It could have been better for me but this is very good for the team."
Alonso nearly dropped further down the order as Montoya, who had been forced to start from the rear of the grid for his role in a practice crash, battled to find a way through.
The Colombian, though, failed to get through as Alonso, Montoya, Ralf Schumacher, Michael Schumacher and Rubens Barrichello finished within a second of each other for fourth to eighth places.
Monaco Grand Prix results:
1. Kimi Raikkonen (Finland) McLaren 1:45:15.556
2. Nick Heidfeld (Germany) Williams +13.887 seconds
3. Mark Webber (Australia) Williams +18.484
4. Fernando Alonso (Spain) Renault +36.487
5. Juan Pablo Montoya (Colombia) McLaren +36.647
6. Ralf Schumacher (Germany) Toyota +37.177
7. Michael Schumacher (Germany) Ferrari +37.223
8. Rubens Barrichello (Brazil) Ferrari +37.570
9. Felipe Massa (Brazil) Sauber +1 lap
10. Jarno Trulli (Italy) Toyota +1 lap
11. Jacques Villeneuve (Canada) Sauber +1 lap
12. Giancarlo Fisichella (Italy) Renault +1 lap
13. Tiago Monteiro (Portugal) Jordan +3 laps
14. Christijan Albers (Netherlands) Minardi +5 laps