Ferrari's Felipe Massa held off the challenge of McLaren's Lewis Hamilton in the Bahrain Grand Prix to win his first race of the season.
Massa savours the spoils of victory after leading throughout
The Brazilian led throughout but was pressured early and late in the race by Hamilton, the first man to take podiums in his first three Grands Prix.
Ferrari's Kimi Raikkonen was third after challenging Hamilton mid-race.
BMW Sauber's Nick Heidfeld was fourth, holding off a challenge from the struggling McLaren of Fernando Alonso.
The result leaves Alonso, Raikkonen and Hamilton in a three-way tie on points at the top of the world standings, with Massa five behind.
Massa needed a good result in Bahrain after disappointment in the first two races and there was no repeat of his poor start from pole in Malaysia last Sunday.
The results in the first two races were not what I expected but this time we put everything together
He led comfortably into the first corner, but could not shake Hamilton from his rear-view mirrors during the first part of the race.
By the time of Hamilton's first stop for fuel and tyres on lap 19, the Ferrari was still only around a second ahead, but the stops changed everything.
Hamilton found his McLaren lacking grip on his new tyres and Massa began to pull away.
From pressuring the lead Ferrari, Hamilton now came under pressure from Raikkonen.
The Finn had spent the first stint stuck behind Alonso, but after passing the Spaniard during the first pit stops he set about trying to make good the damage.
Just as in Malaysia, though, Hamilton defended like a veteran, and despite making a final stop three laps later than Raikkonen the Englishman managed to rejoin the track still in second place.
"I struggled a bit on the new tyres, the balance was not very good," Hamilton said. "We got back onto the hard tyre [for the last stint] and we were able to keep up the pace."
Back on his favoured hard tyres, Hamilton quickly pulled away from Raikkonen and began to cut into Massa's 10-second lead.
He pegged it back to five seconds before Massa responded. Hamilton continued to attack, but the Ferrari was able to comfortably hold him back until the end.
"The results in the first two races were not what I expected," said Massa.
"Something was missing. But this time we put everything together. I'm really pleased."
The same could not be said for Alonso, who found his McLaren even less to his liking in the second stint than did Hamilton.
Button crashes out on the first lap as his year goes from bad to worse
The world champion later complained of grip problems, saying he had "no confidence" in the car and after his first stop he quickly came under pressure from Heidfeld, who grabbed fourth place with a brave move around the outside of the McLaren at turn four on lap 31.
Like Hamilton, Alonso picked up some pace in the final stint, but although he caught Heidfeld, he could not pass him.
Sixth place went to the second BMW Sauber of Robert Kubica, who was followed home by the Toyota of Jarno Trulli and Giancarlo Fisichella's Renault.
The other British drivers did not enjoy such good fortune as Hamilton.
Jenson Button's race ended on the first lap when he spun on turn four after being clipped by Scott Speed, who had been hit by one of the Spykers.
Red Bull's David Coulthard had a better day, battling up from 21st place to seventh before unfortunately being forced out by a driveshaft failure.
Fellow Briton Anthony Davidson lasted until lap 53, before he was forced off trailing smoke.
Bahrain Grand Prix result:
1 Felipe Massa (Brz) Ferrari one hour 33 minutes 27.515 seconds
2 Lewis Hamilton (GB) McLaren-Mercedes 2.360sec behind
3 Kimi Raikkonen (Fin) Ferrari @ 10.839sec
4 Nick Heidfeld (Ger) BMW Sauber @ 13.831sec
5 Fernando Alonso (Sp) McLaren-Mercedes @ 14.426sec
6 Robert Kubica (Pol) BMW Sauber @ 45.529sec
7 Jarno Trulli (Ita) Toyota @ 1min 21.371sec
8 Giancarlo Fisichella (Ita) Renault @ 1:21.701
9 Heikki Kovalainen (Fin) Renault @ 1:29.411
10 Nico Rosberg (Ger) Williams-Toyota @ 1:29.916
11 Alexander Wurz (Aut) Williams-Toyota @ 1 Lap
12 Ralf Schumacher (Ger) Toyota @ 1 Lap
13 Rubens Barrichello (Brz) Honda @ one lap
14 Christijan Albers (Ned) Spyker-Ferrari @ two laps
15 Adrian Sutil (Ger) Spyker-Ferrari @ four laps
16 R A Davidson (GB) Super Aguri-Honda 53 Laps completed
R M Webber (Aus) Red Bull-Renault 41 laps completed
R D Coulthard (GB) Red Bull-Renault 36 laps
R T Sato (Jpn) Super Aguri-Honda 34 laps
R V Liuzzi (Ita) Toro Rosso-Ferrari 26 Laps
R J Button (GB) Honda R 0 laps
R S Speed (USA) Toro Rosso-Ferrari 0 laps
Key: R = retired