The British driver held off Vettel by just 0.057 seconds to top the timesheets.
Vettel’s Red Bull team-mate Mark Webber finished third-fastest ahead of Lewis Hamilton, who is driving his last race for McLaren this weekend. Ferrari’s title-chasing Fernando Alonso was eighth.
In their final race weekend together, the McLaren team-mates seemed keen to outpace each other.
Whilst Button clocked his fastest time of the morning with a 1:14.419, his Mercedes-bound team-mate usurped him by three tenths of a second, only to lose the top-spot to Button again.
If McLaren had been able to keep consistency this season, they could have easily been contending for the constructors’ title in Brazil.
Kimi Raikkonen’s engine exploded in spectacular fashion down the back straight, leaving his Lotus to be lifted back to the garage.
Whilst the team have two hours to change the parts before qualifying, the Finn had also lost a lot of time in Friday practice to engine problems.
Bruno Senna ran wide on the penultimate corner, hitting the kerb and spinning his Williams across the track.
Mercedes’ Michael Schumacher was forced to take avoiding action, keeping to the left of the track to allow the stricken Brazilian to recover and return to the pits.
Ferrari was practicing towing techniques but interestingly to the benefit of Felipe Massa.
Despite battling for the drivers’ championship, Fernando Alonso was allowing his team-mate to get a tow down the back straight.
The move suggests Ferrari will be using this technique later in qualifying to put both drivers as high up the grid as possible.
Alonso was struggling during this practice session, setting only the eighth fastest time, 0.503 seconds off the pace.
The Spaniard must be on the podium to stand a chance of winning his third drivers’ championship so grid position is going to be important.
1. Jenson Button (Gbr) McLaren 1:13.188
2. Sebastian Vettel (Ger) Red Bull +0.057
3. Mark Webber (Aus) Red Bull +0.197
4. Romain Grosjean (Fra) Lotus +0.232
5. Paul di Resta (Gbr) Force India +0.298
6. Lewis Hamilton (Gbr) McLaren +0.201
7. Nico Hulkenberg (Ger) Force India +0.414
8. Fernando Alonso (Spa) Ferrari +0.503
9. Pastor Maldonado (Ven) Williams +0.512
10. Felipe Massa (Bra) Ferrari +0.524
11. Bruno Senna (Bra) Williams +0.760
12. Nico Rosberg (Ger) Mercedes +0.938
13. Sergio Perez (Mex) Sauber +1.002
14. Kamui Kobayashi (Jpn) Sauber +1.004
15. Michael Schumacher (Ger) Mercedes +1.159
16. Daniel Ricciardo (Aus) Scuderia Toro Rosso +1.499
17. Jean-Eric Vergne (Fra) Scuderia Toro Rosso +1.784
18. Vitaly Petrov (Rus) Caterham +1.971
19. Heikki Kovalainen (Fin) Caterham +2.519
20. Timo Glock (Ger) Marussia +2.575
21. Charles Pic (Fra) Marussia +2.871
22. Pedro de la Rosa (Spa) HRT-F1 +3.010
23. Narain Karthikeyan (Ind) HRT-F1 +3.605
24. Kimi Raikkonen (Fin) Lotus No Time
MORE: The latest football news
MORE: The latest tennis news
BIOGRAPHY: Ethan Hazard
BIOGRAPHY: Daniel Sturridge