Hamilton, on pole at the last four races, finished quickest in the opening 90-minute session for Sunday's Italian Grand Prix, only for Vettel to wrest control in the second.
The reigning three-times world champion, who has had to play second fiddle to Hamilton in qualifying in Germany, Hungary and Belgium of late, was out on his own at the top of the timesheet.
In his all-conquering Red Bull, Vettel posted a lap of one minute 24.453secs, with team-mate Mark Webber the best of the rest, but a remarkable 0.623secs adrift.
Unlike in first practice when the top 14 drivers were covered by a second, and on the hard Pirelli tyre, the switch in the second session to the faster medium-compound rubber resulted in a greater spread.
Only six drivers finished within a second of Vettel, with Lotus' Kimi Raikkonen leading the field behind the Red Bull one-two, albeit setting exactly the same time as team-mate Romain Grosjean.
Lotus have handed Raikkonen a long-wheelbase car for this weekend in a bid to seek any advantage they can find, and although the 33-year- old was four tenths of a second faster than Grosjean in FP1, they could not be separated in FP2.
The Finn, overlooked by Red Bull for the seat due to be vacated by Webber at the end of the year, is desperate to close the 63-point gap to Vettel after suffering his first retirement for 39 races last time out at Spa.
Fellow title challengers Hamilton and Ferrari's Fernando Alonso also need to outshine Vettel this weekend as they trail the German by 58 and 46 points respectively.
On home soil in front of the Ferrari fans, Alonso had to settle for fifth quickest, with Hamilton sixth just ahead of Mercedes' team-mate Nico Rosberg, with the trio covered by 0.037secs.
Felipe Massa clawed his way up to eighth in his Ferrari, followed by the McLaren duo of Jenson Button and Sergio Perez, with the trio all just over a second back.
Force India's Paul Di Resta was 11th in his Force India, 1.377secs adrift, with Max Chilton down in 19th in his Marussia, but for once ahead of team-mate Jules Bianchi, who was slowest at 3.604secs down.