Vettel claimed his first victory of the season and the 22nd of his career with a near-flawless drive from pole position to the chequered flag to come home ahead of Kimi Raikkonen, the 2007 champion, and his Lotus team-mate Romain Grosjean.
It was Grosjean's first podium finish in Formula One and Raikkonen's fifth and Vettel's first win since the Indian Grand Prix last year.
Australian Mark Webber finished fourth in the second Red Bull, confirming their return to form after a lacklustre start to the year.
Vettel's win lifted him to the top of the drivers' standings with 53 points ahead of Hamilton on 49 and Webber one point behind.
He was the fourth different winner in four races so far in the 2012 season.
German Nico Rosberg, who claimed his maiden victory for the Mercedes team at last weekend's Chinese Grand Prix, finished fifth ahead of Briton Paul Di Resta of Force India and two-time champion Fernando Alonso of Ferrari.
Lewis Hamilton, who led the championship before Bahrain, came home eighth after a troubled race for McLaren, ahead of Felipe Massa in the second Ferrari and, amazingly, seven-times champion ichael Schumacher in the second Mercedes.
Schumacher had started from 22nd on the grid.