Marc Marquez seized top spot away from the Ducatis of Jorge Lorenzo and Andrea Dovizioso in the dying stages of FP2 to lead the session by 0.138 seconds.
Lorenzo picked up where his Ducati teammate Dovizioso left off in FP1 by going to in the early stages of the second session, the double Aragon MotoGP winner putting in a 1:49.278s.
Marquez, who did not fit a fresh tyre in FP1 for a time attack, began the session on new hard tyres on the front and rear of his Honda, and usurped Lorenzo with a 1:48.644s.
The Spaniard's time at the top was brief, as Andrea Iannone muscled his Suzuki to the head of the pack with a 1:48.381s, which remained the benchmark through to the closing stages.
Iannone's time came under threat from Nieto Ducati's Alvaro Bautista in the final five minutes, with the Spaniard just missing top spot on his year-old GP17 by 0.070s.
Two minutes later, Dovizioso demoted Iannone with a 1:47.835s, while LCR's Cal Crutchlow just missed out on his former Ducati teammate's time by just 0.027s.
Marquez did hold top spot briefly prior to Dovizioso's lap, and returned there with a 1:47.382s on his final flying lap to end Friday fastest of all in an unusual move from the Honda rider, who tends to avoid time attacks on the opening day of running of a race weekend.
Lorenzo put Marquez's time under some pressure on his last attempt, but fell short by 0.138s with a 1:47.520s to end the day second, with teammate Dovizioso a little over three tenths further adrift in third.
Crutchlow was shuffled back to fourth at the chequered flag, while Iannone put in a late charge to edge ahead of Pramac's Danilo Petrucci in fifth spot.
Dani Pedrosa lifted himself up from 18th in FP1 to seventh in the afternoon session, with Bautista and the factory Yamaha duo of Valentino Rossi and Maverick Vinales rounding out the top 10.
The improvements from the works M1s saw Marc VDS' Franco Morbidelli shuffled out of a provisional Q2 place by just 0.102s, with Jack Miller – who was third in FP1 – a few hundredths further back in 12th.
Avintia stand-in Jordi Torres found close to two seconds in laptime in his second MotoGP session as Tito Rabat's replacement, ending FP2 3.6s off the pace in 24th and just over a second from 22nd-placed teammate Xavier Simeon.