The Briton had already been quicker on the soft compound - setting a 1m 10.460s to Rosberg's 1m 10.499s - but increased that gap as the field switched onto supersofts around the halfway mark.
Hamilton instantly dropped down to a 1m 09.542s, the first sub-1m 10s lap of the weekend, which was never headed. Rosberg outbraked himself on his first flyer with the red-marked Pirellis, but managed to pull it together to record a 1m 09.919s.
Behind the Silver Arrows pair, Ferrari's Fernando Alonso was again third fastest, fractions ahead of Williams' Valtteri Bottas and Felipe Massa. The Spaniard, who took his F14 T round in 1m 10.470s, also looked strong on a long run, although he was told by his race engineer: "This pace is still okay, it's competitive, except for Mercedes..."
After Bottas and Massa, who continued to show the potential of the FW36, Sebastian Vettel finally got things going for Red Bull at their home track as he set the sixth fastest time with 1m 10.807s. He was followed by Jenson Button on 1m 10.813s, but the Briton had a mixed session, at one stage complaining that McLaren's aero upgrades had not rectified a problem experienced two weeks ago in Canada.
Daniel Ricciardo was eighth in the second Red Bull on 1m 10.920s, with Kevin Magnussen posting 1m 10.936s in the second McLaren. Towards the end the Dane had a moment while fighting with Vettel in Turn 2, when both were on very worn supersofts. Vettel and Ricciardo had been late coming out as both required some work on their floors following off track moments in FP1.
Toro Rosso's Jean-Eric Vergne and Ferrari's Kimi Raikkonen completed those in the sub-1m 11s bracket, with 1m 10.972s and 1m 10.974s apiece.
Daniil Kvyat was 12th on 1m 11.261s in the second Toro Rosso, ahead of Sergio Perez's Force India on 1m 11.296s, Esteban Gutierrez's Sauber on 1m 11.491s, Pastor Maldonado's Lotus on 1m 11.765s, Adrian Sutil's Sauber on 1m 11.806s and Nico Hulkenberg's Force India on 1m 11.935s. After recovering from engine problems in FP1, Sutil said his C33 was a real handful to drive.
Max Chilton got the upper hand over Marussia team mate Jules Bianchi this time, but it was close: 1m 12.229s to 1m 12.279s. The pair were split by the ill-handling Lotus of Romain Grosjean, who came round in 1m 12.262s. Kamui Kobayashi did a strong job to put Caterham in their bracket with 1m 12.937s as team mate Marcus Ericsson made up for time lost this morning with the final time of 1m 13.596s.
Once again it was a busy session, with off track moments for a litany of drivers including Sutil, Maldonado, Ericsson, Hamilton, Hulkenberg, Perez, Bianchi, Gutierrez, Grosjean, Kobayashi, Vettel and Rosberg.