The result was McLaren's 63rd front row sweep in F1, which set a new record.
Having led both second and third practice, Hamilton maintained his strong form to set a 1m24.010s at the start of Q3.
That proved unbeatable, and Button eventually joined him up front with a lap 0.123 seconds slower.
But it was a disastrous session for Massa's championship-leading team-mate Fernando Alonso, who was only 10th, 1.4s slower. Ferrari reported a suspected anti-rollbar failure.
Paul di Resta qualified a superb fourth, although he will move down to ninth when a gearbox-change penalty is applied.
The Scot's speed will still be some consolation for Force India as his team-mate Nico Hulkenberg encountered an apparent gearbox problem at the start of Q1 and was left at the back of the field.
It was also a tough day for Williams. A mistake on the exit of the Ascaris left Pastor Maldonado 12th in Q2, which will become 22nd on the grid due to his Spa penalties. Bruno Senna was only 14th in the sister car.
D'Ambrosio substitute had a brief scare in Q1 when an error on his first run left him behind Heikki Kovalainen's Caterham and in danger of elimination, but he switched to the softer tyres and made the cut with his last attempt.
- Related links