The defending double world champion led from pole and held off Lotus’s Kimi Raikkonen in what turned out to be a close battle.
Romain Grosjean was third in the other Lotus, while McLaren’s Lewis Hamilton finished eighth and Jenson Button retired.
“I think it was an incredible race, extremely tough,” said Vettel, who now leads the drivers’ championship standings by four points, ahead of Hamilton.
“We had a good start, I was able to pull away immediately which turned out to be a big advantage because we always had to go on a used set of tyres as we used nearly all of them in qualifying. Kimi was very quick, so was Romain.
“It’s a very tight season. The cars are very close to each other. Small things can make a huge difference. We started the season with McLaren as the best car by far but we have seen Sunday can be a different picture. I think they still have one of strongest packages.
“China was a very good lesson for us, driving two packages. For here we focused on our new package and pushing that forward. I’m just happy for now. I don’t care what happens in the next race, at least not today.”
Raikkonen admitted his disappointment at not being able to clinch victory in Bahrain despite his best efforts.
“I think we gave ourselves a chance but I’m disappointed I didn’t manage to win it,” he said. “I made a small mistake at the beginning, lost one place to Ferrari, and I had to get that place back.
“In the end we were not fast enough to win. I got one chance to get past Sebastian but I chose the wrong side. That was the only chance really.”
1 Sebastian Vettel (GER/Red Bull) 1h 35min 10.990sec
2 Kimi Raikkonen (FIN/Lotus) at 3.333
3 Romain Grosjean (FRA/Lotus) 10.194
4 Mark Webber (AUS/Red Bull) 38.788
5 Nico Rosberg (GER/Mercedes) 55.460
6 Paul di Resta (GBR/Force India) 57.543
7 Fernando Alonso (ESP/Ferrari) 57.803
8 Lewis Hamilton (GBR/McLaren) 58.984
9 Felipe Massa (BRA/Ferrari) 1:04.999
10 Michael Schumacher (GER/Mercedes AMG) 1:11.490
11 Sergio Perez (MEX/Sauber) 1:12.702
12 Nico Hülkenberg (GER/Force India) 1:16.539
13 Kamui Kobayashi (JPN/Sauber) 1:30.334
14 Jean-Eric Vergne (FRA/Toro Rosso) 1:33.723
15 Daniel Ricciardo (AUS/Toro Rosso) 1 lap
16 Vitaly Petrov (RUS/Caterham) 1 lap
17 Heikki Kovalainen (FIN/Caterham) 1 lap
18 Jenson Button (GBR/McLaren) 2 laps
19 Timo Glock (GER/Marussia) 2 laps
20 Pedro de la Rosa (ESP/HRT) 2 laps
21 Narain Karthikeyan (IND/HRT) 2 laps
22 Bruno Senna (BRA/Williams) 3 laps
MORE: The latest football news
MORE: The latest tennis news