Mercedes driver Lewis Hamilton took his third victory in four races in the 2015 Formula 1 season with a dominant drive in the Bahrain Grand Prix.
While the reigning world champion always looked in control at the front, there was a thrilling battle for the trio of places behind him with Ferrari's Kimi Raikkonen coming out on top to score his first podium of 2015.
Raikkonen also closed on Hamilton, who had some late brake worries, but the Briton stayed clear.
Nico Rosberg finished third, ahead of Williams's Valtteri Bottas and the other Ferrari of Sebastian Vettel in the first night race of the season.
Hamilton made a clean start from pole, with Vettel going defensive and successfully holding on to second. That backed Rosberg up, allowing Raikkonen to snatch third.
However, Rosberg battled his way back past Raikkonen and then took advantage of Vettel running wide at Turn 1 to close and then pass at the same corner next time around.
Ferrari successfully used the undercut to jump Rosberg at the first round of pitstops, but Vettel was then distracted by Hamilton exiting the pitlane and Rosberg took advantage - diving down the inside of Turn 1 to retake second.
The Scuderia repeated the undercut trick at the second stops and again it worked, with Vettel jumping Rosberg, but another mistake by Vettel, this time running wide at the final corner, allowed Rosberg back through.
That slip also caused front wing damage for Vettel and forced him to pit for repairs.
Raikkonen then started catching Rosberg in the final stint of the race, as he was running the softer of the two compound tyres.
And the Finn capitalised when Rosberg - who also had brake problems - ran wide at Turn 1 in the closing laps, allowing the Ferrari to snatch second.
Vettel dropped to fifth with his extra pitstop and could not get back past Bottas despite a long chase.
Daniel Ricciardo's Renault engine let go coming out of the final corner of the last lap, but he managed to cross the line to take sixth for Red Bull.
Romain Grosjean scored points for the second successive race with seventh for Lotus, ahead of Sergio Perez, who scored for Force India for the first time since the season-opening Australian Grand Prix as he made a two-stop strategy work well to progress through three-stopping rivals in the midfield.
Daniil Kvyat rescued some points with ninth in the Red Bull, having started in 17th, with Felipe Massa completing the top 10 and recovering well from a pitlane start after stalling on the grid.
The Brazilian ran eighth late on but his very long final stint on his two-stop strategy proved ambitious and his tyres faded.
Fernando Alonso equalled McLaren's best finish of the season in 11th, while his team-mate Jenson Button did not even make the start after a problem was detected with his energy recovery system.
Sauber's Felipe Nasr was 12th, one place ahead of Force India's Nico Hulkenberg with Marcus Ericsson 13th, having run in the points before losing at least 20 seconds during a pitstop when his team struggled to fit the front-left tyre.
Pastor Maldonado was also in contention for points but he was delayed in the pits with smoke pouring from the front brakes of the Lotus and he ended up 15th.
Manor got both cars to the finish for the second successive race, with Will Stevens 16th and Roberto Merhi 17th.
Toro Rosso suffered its first double non-finish of the season. Carlos Sainz Jr pulled off track at the halfway point and Max Verstappen parked his car in the garage a few laps later.
RESULTS - 57 LAPS:
|6||Daniel Ricciardo||Red Bull/Renault||1m01.751s|
|8||Sergio Perez||Force India/Mercedes||1 Lap|
|9||Daniil Kvyat||Red Bull/Renault||1 Lap|
|10||Felipe Massa||Williams/Mercedes||1 Lap|
|11||Fernando Alonso||McLaren/Honda||1 Lap|
|12||Felipe Nasr||Sauber/Ferrari||1 Lap|
|13||Nico Hulkenberg||Force India/Mercedes||1 Lap|
|14||Marcus Ericsson||Sauber/Ferrari||1 Lap|
|15||Pastor Maldonado||Lotus/Mercedes||1 Lap|
|16||Will Stevens||Marussia/Ferrari||2 Laps|
|17||Roberto Merhi||Marussia/Ferrari||3 Laps|
|-||Max Verstappen||Toro Rosso/Renault||Retirement|
|-||Carlos Sainz||Toro Rosso/Renault||Retirement|
|-||Jenson Button||McLaren/Honda||Not started|