Hamilton started from the pole and protected his lead to finish 9.6 seconds ahead of Timo Glock, who equaled Toyota's best Formula One result by finishing second.
Fernando Alonso gave scandal-hit Renault a lift by finishing third for the French team's first podium finish of the season.
Red Bull's Sebastian Vettel pursued Hamilton for much of the race, and closed the gap to just half a second after 37 of 61 laps. But his hopes of victory were dashed by a drive-through penalty for speeding in pit lane. He finished fourth.
Button worked his way up the field from 12th place to finish fifth, one place ahead of teammate and championship rival Rubens Barrichello. Button leads Barrichello by 15 points with three races to go.
"I'm really happy to get fifth, four points, pull one on Rubens and only lose one to Vettel, so really this has been a good race," Button said.
Red Bull's Mark Webber exited on Lap 45 after a brake failure sent him spinning off the track, effectively ending the Australian's slim championship hopes. Webber had been running in fourth in the early part of the race.
Brawn now holds a 42.5-point lead over Red Bull in the constructors' championship and needs just 12 points over the final three races to take the crown in its inaugural season.
Vettel is 25 points behind Button, and has little chance of preventing one of the Brawn drivers from taking the championship. However, he was not conceding defeat quite yet.
"There's always a chance," Vettel said. "We try to push as hard as we can and try to win races. If not, at least finish second, if not, at least finish third. We want to do the best we can and see what happens."
Barrichello is running out of chances to overtake Button, but was equally defiant.
"I'm not going to throw my towel in," Barrichello said. "I will fight to the end."
Hamilton's only headache came early in the race when his KERS power-boost system failed. He had to reboot the system by pushing buttons on the steering wheel while driving a circuit of constant turns.
"Like I didn't have enough things to think about in the car, pressing all those buttons, but it was fun," Hamilton said.
Though Vettel loomed up during the second stint, Hamilton described the race as "pretty straightforward."
"I was never really under serious pressure. When Vettel was behind me I knew I was five laps longer [fueled] and I just had to keep him behind."
Williams driver Nico Rosberg was running second through the first stint of the race, but crossed the pit-lane exit line on his way out after his first stop, and had to serve a drive-through penalty that cost him a chance of any points. He finished 11th.
Sutil had spun out trying to pass Toro Rosso's Jaime Alguersuari. The German immediately restarted and tried to turn his car around on the track, but ran its nose into Heidfeld's path.
Alonso's podium finish brought some smiles back to the Renault garage after a week when they dealt with the fallout of having staged a crash here last year. The team lost team principal Flavio Briatore to an indefinite ban, chief engineer Pat Symonds for five years and saw an exodus of major sponsors.
"I would like to dedicate it to Flavio, who I know would have watched the race on television," Alonso said. "Part of the first success of the season is due to him."
Glock's second-place finish was a welcome return to form for Toyota -- believed to be weighing its F1 future -- whose early season strength dissipated during the European races.
"When you fall down and fight back again, it's really important for the team," said Glock, who equaled his personal-best finish.