Mercedes (Nico Rosberg 1, Lewis Hamilton 3)
Hamilton started on pole for the second race in a row, Rosberg chalked up his second win of the season and fifth in a row, 16th of his career. Rosberg took the lead at the start, Hamilton and Bottas collided, with the Finn handed a drive-through penalty.
Hamilton then fought back from seventh at the end of lap one. Mercedes have now won eight races in a row but their run of seven one-two finishes ended.
Ferrari (Kimi Raikkonen 2, Sebastian Vettel did not start)
Vettel pulled over on the formation lap with a plume of smoke from his engine. He had qualified third. Raikkonen had a poor start but recovered to finish runner-up for the second year in a row and is fourth in the championship. He never got close enough to Rosberg to challenge for the lead.
Red Bull (Daniel Ricciardo 4, Daniil Kvyat 7)
Ricciardo started fifth and finished fourth for the second race in a row. He is third overall. He damaged his front wing at the start in a collision with Bottas. Kvyat started 15th and also suffered front wing damage on lap one.
Williams (Felipe Massa 8, Valtteri Bottas 9)
Bottas collided with Hamilton into the first corner after a blistering start, damaging his front wing and collecting a drive-through penalty. Massa was second after the first lap but lost pace on the medium compound tyre on a two-stop strategy.
Haas (Romain Grosjean 5, Esteban Gutierrez retired)
Grosjean followed up sixth in Australia with fifth in Bahrain, after starting in ninth, and is fifth overall -- the highest he has ever been. Gutierrez retired in the garage after a problem with a left front brake disc.
Toro Rosso (Max Verstappen 6, Carlos Sainz retired)
Toro Rosso scored points in Bahrain for the first time. Verstappen scored for the second race in a row. Sainz retired after a first lap collision with Force India's Perez caused a right rear puncture that damaged the car's floor.
Force India (Nico Hulkenberg 15, Sergio Perez 16)
Both drivers damaged their cars early on in collisions. Perez has yet to score this season.
McLaren (Stoffel Vandoorne 10, Jenson Button retired)
Vandoorne scored on his debut, becoming the 62nd rookie to do so since 1950. He had replaced Fernando Alonso after the Spaniard failed a medical on Thursday following his crash in Australia. Button retired with a power unit failure on lap seven. The point was McLaren's first of the season.
Renault (Kevin Magnussen 11, Jolyon Palmer did not start)
Palmer had a hydraulics issue and returned to the garage on the formation lap, where he retired. Magnussen started from the pit lane as penalty for a weighing infringement on Friday.
Sauber (Marcus Ericsson 12, Felipe Nasr 14)
Still no points for the troubled Swiss team, with Nasr beaten by one of the Manors. Ericsson reported a loss of power on the first lap. Nasr started at the back of the grid.
Manor Racing (Pascal Wehrlein 13, Rio Haryanto 17)
Manor got both cars to the finish with Wehrlein having an impressive race. Haryanto saw the chequered flag for the first time.