Rosberg had controlled the race with seeming ease through the first cycle of pit stops - he stopped on Lap 15, and Hamilton followed one lap later - but in the second stint Hamilton steadily hunted him down, slashing a 2.5s gap to just 0.7s in a handful of laps.
Rosberg rallied slightly, but was taken by surprise at Turn 12 on the 24th lap when Hamilton came from a long way back, trusted his luck and risk assessment, and dived down the inside to take the lead. Thereafter it was all a question of control as he opened a gap and maintained it to the flag despite some late, heavy traffic - the result of several fierce midfield scraps which raged over the closing stages of the Grand Prix.
Rosberg never gave up the fight and said he didn't find his rhythm until his team mate overtook, but by then it was too late. It was Hamilton's fifth straight victory, his 10th of the season and the 32nd of his career - putting him ahead of Nigel Mansell's previous British record of 31 Grand Prix wins.
Williams' Felipe Massa seemed set to complete the podium until a slow stop on the 32nd lap dropped him behind hard-charging Daniel Ricciardo, who recovered superbly from a slow start to take the place for Red Bull despite a late counter-attack from the Brazilian.
Valtteri Bottas in the second Williams was a relatively quiet fifth, while Fernando Alonso fought his way through to sixth. He only just held off a charging Sebastian Vettel, who started from the pits and made four stops en route to seventh for Red Bull.
The race itself was neutralised by the safety car on the first lap after Force India's Sergio Perez crashed into Adrian Sutil's Sauber - an incident currently being investigated by the stewards - and Vettel ran over the resulting debris, suffering a puncture. The German pitted again with a handful of laps remaining for a set of soft-compound Pirellis, which enabled him to scythe through the field in the final laps.
McLaren's Kevin Magnussen made an early stop under the safety car and later fought tooth and nail for eighth ahead of a tough fight between Jean-Eric Vergne's Toro Rosso and Pastor Maldonado's Lotus. Maldonado had shouldered his way to ninth on the final lap but the Venezuelan was later dropped back to tenth after picking up a five-second penalty for speeding in the pit lane. Vergne had earlier muscled his way past the second Lotus of Romain Grosjean, another incident currently under investigation. Grosjean brought his E22 home in 11th, completing what was Lotus's strongest race for a long time.
Jenson Button also ran over debris at the start and suspected for the rest of the race that he'd damaged his McLaren's floor. He had a fantastic scrap early on with Alonso, but fell back steadily to 12th as his McLaren lacked grip and pace. Kimi Raikkonen had a horrible race, finishing 13th for Ferrari after being tagged by Perez in his lap-one incident with Sutil, ahead of Sauber's Esteban Gutierrez and Daniil Kvyat in the second Toro Rosso.
Perez and Sutil retired as a result of their first-lap collision, while Nico Hulkenberg completed a miserable weekend for Force India when he pulled off circuit with mechanical problems.
As a result of his triumph, Hamilton now has 316 points to Rosberg's 292, which effectively means he can clinch the 2014 title by finishing second to Rosberg over the remaining two Grands Prix. Ricciardo strengthened his grip on third place, on 214.
In the constructors' stakes, Mercedes have 608 points to Red Bull's 363, with Williams third on 238. Ferrari are fourth with 196, 49 points ahead of McLaren.