Max Verstappen again got the better of team mate Daniel Ricciardo, as the Red Bull men finished fourth and fifth, while in sixth and seventh, Williams’ Valtteri Bottas and McLaren’s Jenson Button set lap times identical to the nearest thousandth of a second.
It was a strong recovery from Button, who spent much of the session in the garage as McLaren worked to remedy technical maladies from FP1.
Completing the top ten were Kimi Raikkonen, on a very different programme to his team mate in the second Ferrari, Force India’s Nico Hulkenberg and Toro Rosso’s Carlos Sainz.
It had been a frantic start to the session, with the lead changing hands countless times as the track improved and drivers bolted on the supersoft and then ultrasoft tyres.
Vettel set the initial pace, but Hamilton, Hulkenberg and then Perez popped up at the front - often multiple times. Verstappen then took over, trading times with Vettel before Hamilton registered an imperious benchmark, dipping under the 1m 15s barrier while still on softs.
At around the hour mark Rosberg edged ahead of his team mate, but only after bolting on the ultrasofts. Hamilton followed suit and was once again demonstrably quicker, a full half second ahead of his team mate. Rosberg improved, but not enough to stay ahead of Vettel, who took his Ferrari round in 1m 14.469s - a promising 0.257s off the reigning world champion.
McLaren's Fernando Alonso spent much of the session in the top 10, but found himself bumped down to 11th following improvements from team mate Button and Ferrari's Raikkonen. He finished the session ahead of Force India's Sergio Perez and Williams' Felipe Massa, who was able to get out immediately despite his DRS-related crash in FP1.
There was no such drama in the afternoon, although Hamilton, Verstappen, Sainz, Jolyon Palmer, Romain Grosjean, Daniil Kvyat and Pascal Wehrlein all had minor offs, and Button actually kissed the wall, as drivers explored the limits.