Massa dominated the race after taking the lead off the start-line
Felipe Massa became the third winner in as many Grands Prix this season with a dominant drive for Ferrari in Bahrain.
The Brazilian took the lead at the start from pole-man Robert Kubica's BMW Sauber and kept Ferrari team-mate Kimi Raikkonen under control throughout.
World champion Raikkonen took the lead in this year's title race for the first time as Lewis Hamilton finished 13th.
Hamilton needed to pit for repairs to his McLaren after an early collision with former team-mate Fernando Alonso.
The Englishman, who had dropped down to 10th from third on the grid after a bad start, ran into the back of the Spaniard's Renault while trying to pass it on lap two.
The incident knocked off Hamilton's front wing, and he needed to pit for a new nose cone at the end of the lap.
He battled hard to make up lost ground, but ran out of time to get into the points.
The 23-year-old had led the championship since winning the first race of the season in Australia last month, but is now five points behind Raikkonen.
The collision between Hamilton and Alonso is unlikely to improve relations between the two men, who had a stormy season as McLaren team-mates last season.
Alonso's car was also damaged in the incident - Hamilton's McLaren knocked pieces out of the Renault's rear wing as it reared up the back of the car.
And after running ninth fending off Timo Glock's Toyota until his first pit stop, the double world champion slipped back to finish 10th, fending off a challenge from Rubens Barrichello's Honda in the closing laps.
Hamilton had a troubled race and lost the championship lead
The race at the front was processional.
After passing Kubica off the line, Massa immediately eased out a gap in the opening laps.
Raikkonen beat Massa in Malaysia two weeks ago despite starting behind him, and might have been expected to close in on his team-mate once he had passed Kubica on lap three.
Instead, Massa managed to inch clear of the Finn, and was five seconds ahead by the time Raikkonen came in for his pit stop on lap 20.
Massa came in on the next lap, making it clear that he had the edge on his team-mate around the tricky desert track.
Raikkonen piled on the pressure in the second stint, bringing the gap between the two down to three seconds with a succession of fastest laps.
But Massa, unlike in Malaysia, did not crumble under the pressure, and he was able to fend off his team-mate as the two continued in formation to the end.
I had two bad days in the first two races but I love this circuit
Massa admitted the victory had been a relief after the criticism he had received for spinning out of the race in Malaysia.
"For sure I had a not very easy couple of weeks, but that's life," said Massa.
"It's not the first time and won't be the last. I had two bad days in the first two races, but I know that we are quick.
"The race was difficult because I didn't want to make mistakes. I was just controlling the pace and wanted to bring the car home. What was in my mind was the last race.
"I love this circuit. It is my second victory in a row. Always I have gone very strong here."
Raikkonen said: "All weekend has been really difficult. It has been just one of those things and I couldn't get the car where we wanted.
Kubica (behind) was the only driver to give the Ferraris any trouble
"It was a bad weekend, but I still finished second and I am leading the championship."
Kubica was not able to challenge the Ferraris, and when he stopped on lap 17 it became clear that his impressive pole position was at least partly down to running with less fuel than the Ferraris in qualifying.
But the Pole's third place, allied to a comfortable fourth for team-mate Nick Heidfeld, underlined the impression that BMW Sauber will be a major force this year and are likely to interfere in the title battle between Ferrari and McLaren.
Heikki Kovalainen was the first McLaren to finish in fifth place, but he was not in touch with the BMWs, and more concerned about the Toyota of Jarno Trulli behind him.
It was another impressive showing from Trulli, whose Toyota team appear to be emerging from years of squandering their huge resources.
The Italian had himself to fend off pressure from Mark Webber's Red Bull, which took seventh place for the second race in a row.
When I caught up with DC, he was really struggling - he moved across for his racing line but it was too late, I was already committing
The final point in eighth place was taken by Nico Rosberg's Williams.
Jenson Button had been optimistic of points after qualifying an encouraging ninth for Honda, but the Englishman's hopes were dashed by an early puncture.
He rejoined behind Scot David Coulthard, whose Red Bull had suffered the same problem at the same time.
Button was clearly the quicker, but the two tangled when Button went for the inside at Turn Four but Coulthard closed the door, and the Honda was forced into retirement.
"I got a good start I was up two places," Button said, "but then into Turn 4 someone must have touched me in the back of my tyre and I got a puncture.
Button and Coulthard tangled, with the Honda driver blaming his close friend
"When I caught up with DC he was struggling.
"He moved across for his racing line but it was too late - I was already committed.
"Hitting him in the side was me trying to take avoiding action.
"That's not the first time he has done that. He left it too late and there was nowhere for me to go.
"I was already committed. The move wasn't at the apex, it was earlier on and the problem is that he came across in front of me and I couldn't slow the car down quick enough."
For Coulthard, who started in 18th place after failing to get beyond the first round in qualifying, the incident capped a miserable weekend.
"I was battling for position with Jenson; we got too close in one corner and had an incident which took him out of the race and caused more damage to my car," he said.
"It wasn't a great race."
Results of Bahrain Grand Prix after 57 laps of Sakhir circuit on 6 April, 2008:
1 Felipe Massa (Brz) Ferrari one hour 31 minutes 6.970 seconds
2 Kimi Raikkonen (Fin) Ferrari +3.339 secs
3 Robert Kubica (Pol) BMW Sauber +4.998
4 Nick Heidfeld (Ger) BMW Sauber +8.409
5 Heikki Kovalainen (Fin) McLaren-Mercedes +26.789
6 Jarno Trulli (Ita) Toyota +41.314
7 Mark Webber (Aus) Red Bull-Renault +45.473
8 Nico Rosberg (Ger) Williams-Toyota +55.889
9 Timo Glock (Ger) Toyota +1:09.500
10 Fernando Alonso (Spa) Renault +1:17.181
11 Rubens Barrichello (Bra) Honda +1:17.862
12 Giancarlo Fisichella (Ita) Force India-Ferrari one lap behind
13 Lewis Hamilton (GB) McLaren-Mercedes one lap
14 Kazuki Nakajima (Jpn) Williams-Toyota one lap
15 Sebastien Bourdais (Fra) Toro Rosso-Ferrari one lap
16 Anthony Davidson (GB) Super Aguri-Honda one lap
17 Takuma Sato (Jpn) Super Aguri-Honda one lap
18 David Coulthard (GB) Red Bull-Renault one lap
19 Adrian Sutil (Ger) Force India-Ferrari two laps
R Nelson Piquet Jr (Brz) Renault 40 laps completed
R Jenson Button (GB) Honda 19 laps
R Sebastian Vettel (Ger) Toro Rosso-Ferrari 0 laps
Fastest lap: Kovalainen, 1:33.193, lap 49.
Key: R = retired