It was the 25-year-old German's second win in four races this year and the 28th of his career.
It saw him pass Jackie Stewart into sixth in the all-time Grand Prix winning list.
Starting second, Vettel took the lead on lap three and then controlled the 57-laps race as he came home 9.1 seconds clear of nearest rival and 2007 champion Finn Kimi Raikkonen of Lotus.
Frenchman Romain Grosjean finished third in the second Lotus, as the Renault powered team made the best of excellent tyre conservation.
It was the same podium finish as last year's race.
Grosjean denied fourth placed Briton Paul di Resta of Force India his first ever top three finish.
Briton Lewis Hamilton, the 2008 champion, fought hard to finish fifth for Mercedes after a late battle with Australian Mark Webber who came home seventh in the second Red Bull, Mexican Sergio Perez smashing his way to sixth for McLaren.
Two time champion Spaniard Fernando Alonso, who lost the use of his DRS on his Ferrari, came in eighth ahead of pole starting Finn Keke Rosberg in the second McLaren.
Like many, Rosberg struggled with serious rear tyre wear. Briton Jenson Button, champion in 2009, finished 10th for McLaren after several clashes with his own team-mate Perez.
Results from Bahrain Formula One Grand Prix on Sunday:1. Sebastian Vettel (GER/Red Bull) (308,238 km - 1h36:00.498)
2. Kimi Raikkonen (FIN/Lotus) at 9.111sec
3. Romain Grosjean (FRA/Lotus) 19.507
4. Paul di Resta (GBR/Force India) 21.727
5. Lewis Hamilton (GBR/Mercedes) 35.230
6. Sergio Perez (MEX/McLaren) 35.998
7. Mark Webber (AUS/Red Bull Racing) 37.244
8. Fernando Alonso (ESP/Ferrari) 37.574
9. Nico Rosberg (GER/Mercedes) 41.126
10. Jenson Button (GBR/McLaren) 46.631
11. Pastor Maldonado (VEN/Williams) 1min 06.450sec
12. Nico Hlkenberg (GER/Sauber) 1:12.933
13. Adrian Sutil (GER/Force India) 1:16.719
14. Valtteri Bottas (FIN/Williams) 1:21.511
15. Felipe Massa (BRA/Ferrari) 1:26.364
16. Daniel Ricciardo (AUS/Toro Rosso) 1 lap
17. Charles Pic (FRA/Caterham) 1 lap
18. Esteban Gutierrez (MEX/Sauber) 1 lap
19. Jules Bianchi (FRA/Marussia) 1 lap
20. Max Chilton (GBR/Marussia) 1 lap
21. Giedo van der Garde (NED/Caterham) 2 laps
Did not finish:
Jean-Eric Vergne (FRA/Toro Rosso)