Starting from pole position, the world champion damaged his right-front tyre with a flat spot when fending off a challenge from Massa into the first corner but still managed to eke out an advantage in the opening laps.
Alonso, who started fifth, moved up at the start to fourth past Sauber’s Nico Hulkenberg, who had qualified an excellent third, and then brilliantly passed Webber for third around the outside of the second chicane on lap three.
The Spaniard then passed Massa into the first chicane on lap eight but initially could do nothing about Vettel, who extended his lead by about half a second over each of the next few laps.
Hulkenberg drove an excellent race to fifth, giving Sauber by far their best result of the year and fending off Nico Rosberg’s Mercedes for the last 10 laps.
Toro Rosso’s Daniel Ricciardo, whose move to Red Bull next year to replace the departing Webber was confirmed earlier in the week, was seventh, ahead of Lotus’s Romain Grosjean.
The McLarens of Jenson Button and Sergio Perez looked on course to take the final points in ninth and 10th places on the weekend the team celebrated their 50th anniversary.
But both were demoted by the charging Hamilton in the closing laps and Perez was beaten to 11th by Raikkonen, who was just 0.3secs behind Button’s 10th place as they crossed the line.
Raikkonen was hampered by a problem with his KERS power-boost system and Hamilton passed him around the outside of Curva Grande on lap 49 after forcing the Finn into a slight error on the way into the first chicane before going on to dispatch both McLarens.
Pos Driver Team Time/Gap 1. Sebastian Vettel Red Bull-Renault 1h18m33.352s 2. Fernando Alonso Ferrari +5.467s 3. Mark Webber Red Bull-Renault +6.350s 4. Felipe Massa Ferrari +9.361s 5. Nico Hulkenberg Sauber-Ferrari +10.355s 6. Nico Rosberg Mercedes +10.999s 7. Daniel Ricciardo Toro Rosso-Ferrari +32.329s 8. Romain Grosjean Lotus-Renault +33.130s 9. Lewis Hamilton Mercedes +33.527s 10. Jenson Button McLaren-Mercedes +38.327s 11. Kimi Raikkonen Lotus-Renault +38.695s 12. Sergio Perez McLaren-Mercedes +39.765s 13. Esteban Gutierrez Sauber-Ferrari +40.880s 14. Pastor Maldonado Williams-Renault +49.085s 15. Valtteri Bottas Williams-Renault +56.827s 16. Adrian Sutil Force India-Mercedes +1 lap 17. Charles Pic Caterham-Renault +1 lap 18. Giedo van der Garde Caterham-Renault +1 lap 19. Jules Bianchi Marussia-Cosworth +1 lap 20. Max Chilton Marussia-Cosworth +1 lap