Vettel inherited the lead from pole-sitter Lewis Hamilton of McLaren, who led the race until he suffered a gearbox failure on lap 22 and had to retire. It was defending champion Vettel's second win of the season after Bahrain.
Hamilton's teammate Jenson Button finished second at Marina Bay ahead of Ferrari's Fernando Alonso, whose championship lead was cut from 37 to 29 points with six races to go.
Force India's Paul di Resta finished a career-best fourth ahead of Mercedes' Nico Rosberg. Kimi Raikkonen of Lotus was sixth and maintained third place in the championship standings despite not having won a race. Lotus teammate Romain Grosjean was seventh.
Felipe Massa of Ferrari finished eighth ahead of the Australian pair Daniel Ricciardo of Toro Rosso and Mark Webber of Red Bull.
Mercedes' Michael Schumacher retired after a heavy crash into the back of Jean-Eric Vergne, bringing the second safety-car period of the night in a race that was stopped when it reached the two-hour time limit, two laps before its scheduled finish.