The McLaren driver used Pirelli's soft tyres to set a best time of 1m23.399s - enough to beat world champion Sebastian Vettel's Red Bull by 0.164 seconds.
Nico Rosberg put Mercedes in third position, with Button's team-mate Lewis Hamilton in fourth and Lotus's Kimi Raikkonen completing the top five, albeit over half a second off the pace.
Raikkonen's team-mate Romain Grosjean was sixth ahead of Mark Webber in the second Red Bull, with Michael Schumacher, Kamui Kobayashi and Nico Hulkenberg completing the top 10.
This morning's pacesetter Fernando Alonso had to settle for 14th position in the Ferrari.
With the track temperatures rising to 43 degrees Celsius, Sergio Perez was the early pacesetter for Sauber with a lap of 1m25.532s, but the Mexican was demoted around eight minutes into the session, when Vettel stopped the clock at 1m25.000s.
Schumacher was the first man to lap in the 1m24s in the afternoon session just moments later, the German jumping to the top with a 1m24.859s, still some four tenths of a second off Alonso's best from the morning.
The Spaniard returned to first position at the 18-minute mark with a lap that was still around three tenths off his best, but 0.120s faster than Schumacher. Jean-Eric Vergne relegated the local hero to second three minutes later with a fastest lap just 0.006s better than Alonso's.
A few minutes later, Vettel flew to the top of the times in his first run on Pirelli's softs, the world champion's 1m23.563s the best time of the weekend until that point. Sauber's Kobayashi moved into second position, albeit over six tenths off Vettel's best, by also running with the softer compound.
Hamilton first and Webber later also completed runs on the soft tyres to move to second and third behind Vettel.
With 35 minutes gone it was Button's turn to go out with softs, and the Briton made good use of them to spring to the top of the times with a 1m23.399 despite having complained of severe understeer earlier on.
Alonso went out on softs with some 41 minutes to go, but the Spaniard aborted his first flying lap after a first split that was slower than his rivals. He completed the lap in the next attempt, but was only 13th quickest.
Webber was the protagonist of the first incident of the session when he went off the track at Turn 4, the Australian leaving a lot of stones on the circuit as he made his way back to the asphalt.
Webber's move was mirrored by Perez later on, the Sauber driver also having a trip across the gravel at the same corner.
As teams worked on longer runs, the times at the top stayed mostly unchanged for the last 30 minutes of the session.
HRT's Narain Karthikeyan, whose car was driven by Dani Clos in the opening session, failed to set a time in the afternoon, the Indian stopping on track with a problem. He had spent nearly an hour in the garage waiting for his mechanics to solve an electrical issue.