Jenson Button fended off Sebastian Vettel to secure the fastest time in final practice for the Brazilian Grand Prix at Interlagos.
Vettel's Formula 1 world championship rival Fernando Alonso was back in eighth, although he abandoned his final run due to traffic.
Most of the session's action was compressed into the final 10 minutes when the field went into qualifying simulation mode.
Prior to that, the two Mercedes had exchanged the top spot initially before Button set a 1m13.917s that would keep him in first place for most of the morning. Red Bull driver Vettel got within 0.007s of the McLaren but could not depose it.
The Force Indias were the first to show their hand on medium tyres, with first Nico Hulkenberg, then Paul di Resta grabbing first before Button snatched it back almost immediately, the position changing hands three times in less than a minute.
Button's 1m13.192s proved unbeatable for all bar the Briton himself, who got down to a 1m13.188s with his next attempt, despite a disappointing middle sector.
No one could get closer than two tenths adrift of that pace until Vettel delivered a 1m13.245s lap after the chequered flag, vaulting him up from 10th to second.
His team-mate Mark Webber took third, just ahead of the second McLaren of Lewis Hamilton.
Romain Grosjean was a frontrunner all morning, eventually securing the final top-five slot for Lotus.
Force India's burst of pace was no fluke, as di Resta and Hulkenberg retained sixth and seventh even after all the frontrunners had done medium-tyre runs.
The Ferraris had to settle for eighth and 10th, Alonso and Felipe Massa split by the Williams of Pastor Maldonado.
Kimi Raikkonen got no useful running at all. His Lotus suffered a Renault engine failure on the second straight as he went onto what would have been his first flying lap 15 minutes into the morning. Lotus will be able to fit a used spare for the race without having to take a penalty for requiring a ninth engine.
In his final F1 practice session, Michael Schumacher had a lucky escape when Bruno Senna ran very wide out of Juncao and spun his Williams back across the straight in the Mercedes' path. Schumacher avoided being collected and continued safely.
Pos Driver Team Time Laps
1. Jenson Button McLaren-Mercedes 1m13.188s 22
2. Sebastian Vettel Red Bull-Renault 1m13.245s + 0.057 21
3. Mark Webber Red Bull-Renault 1m13.385s + 0.197 25
4. Lewis Hamilton McLaren-Mercedes 1m13.389s + 0.201 17
5. Romain Grosjean Lotus-Renault 1m13.420s + 0.232 24
6. Paul di Resta Force India-Mercedes 1m13.486s + 0.298 21
7. Nico Hulkenberg Force India-Mercedes 1m13.602s + 0.414 22
8. Fernando Alonso Ferrari 1m13.691s + 0.503 15
9. Pastor Maldonado Williams-Renault 1m13.700s + 0.512 20
10. Felipe Massa Ferrari 1m13.712s + 0.524 17
11. Bruno Senna Williams-Renault 1m13.948s + 0.760 20
12. Nico Rosberg Mercedes 1m14.126s + 0.938 25
13. Sergio Perez Sauber-Ferrari 1m14.190s + 1.002 26
14. Kamui Kobayashi Sauber-Ferrari 1m14.192s + 1.004 21
15. Michael Schumacher Mercedes 1m14.347s + 1.159 24
16. Daniel Ricciardo Toro Rosso-Ferrari 1m14.687s + 1.499 21
17. Jean-Eric Vergne Toro Rosso-Ferrari 1m14.972s + 1.784 19
18. Vitaly Petrov Caterham-Renault 1m15.159s + 1.971 22
19. Heikki Kovalainen Caterham-Renault 1m15.707s + 2.519 21
20. Timo Glock Marussia-Cosworth 1m15.763s + 2.575 23
21. Charles Pic Marussia-Cosworth 1m16.059s + 2.871 21
22. Pedro de la Rosa HRT-Cosworth 1m16.198s + 3.010 15
23. Narain Karthikeyan HRT-Cosworth 1m16.793s + 3.605 18
24. Kimi Raikkonen Lotus-Renault no time 3