Hamilton, who last won at Silverstone in his 2008 championship year, now has 161 points to Rosberg's 165 with 10 races remaining and his title hopes fully restored. It was his fifth win of the year.
"I don't want to see a team-mate fail, I want a one-two, but I really needed this result," said Hamilton on the podium in front of a cheering crowd.
Finland's Valtteri Bottas finished second for Williams, 30.1 seconds behind Hamilton, for his second successive podium and best ever finish after starting 14th following a nightmare in qualifying.
Australian Daniel Ricciardo was third for Red Bull and a further 16.3 seconds down the road.
The race was red-flagged almost as soon as it started after Ferrari's 2007 champion Kimi Raikkonen had a big crash that left the Finn limping to the medical centre with a sore ankle but otherwise unscathed.
It was the first time a race had been halted on the opening lap since Monaco 2000.
When it re-started behind the safety car after an hour's delay to fix damaged barriers, Hamilton went from overnight devastation to delight as Rosberg finally suffered some of the misfortune that had plagued his team mate.
The championship and race leader reported a gearbox problem after 20 of the 52 laps, and just after Hamilton's race engineer had informed the second placed Briton it was "Hammer time' - time for a full-on charge.
Nine laps later, Rosberg slowed, pulled over and parked up on the grass as Hamilton sped past his only rival for the championship.
"It was just slowly but surely," said Rosberg, who had previously finished first or second in every race while Hamilton has endured two retirements through no fault of his own.
"It started on lap 20 and then it just got worse from there. There was nothing I could do or that they could suggest to save the gearbox.
"I was very much in control until then," added the German. That's why it's all the more disappointing."
Hamilton's joy as he took the chequered flag was a complete contrast to the despair he felt on Saturday evening after gifting pole to Rosberg.
"England!," he warbled as he took the chequered flag to give his compatriots something to celebrate after a sporting summer of disappointment. "I couldn't be happier. I'm sorry about yesterday, but a fantastic job today, as ever."
Rosberg had secured the top slot on the grid after Hamilton aborted his final lap in the mistaken belief that track conditions would not allow anyone to beat his time.
"He was devastated," his father Anthony told Sky Sports television before the race. "Last night was tough for him.
"It hurt. Not being able to deliver for the fans or team, but he came back with a fresh mind."
Britain's Jenson Button, the most experienced driver in the race who has never finished on his home podium, chased Ricciardo home to take fourth for McLaren on an emotional afternoon for the 2009 champion.
"Just one more lap might have been different," acknowledged Ricciardo. "Jenson was coming but I was able to held on for the podium."
The race was the first at Silverstone for Button, who started third on the grid, since the death of his father John in January. The Briton wore a pink helmet as a tribute while fans donned 'Pink for Papa' shirts.
Red Bull's quadruple champion Sebastian Vettel finished fifth after a lively battle with Ferrari's Fernando Alonso, who took sixth after originally starting 16th and then being hit with a stop/go penalty for overshooting his mark on the grid.
Danish rookie Kevin Magnussen was seventh for McLaren, with Germany's Nico Hulkenberg eighth in a Force India. Russian Daniil Kvyat and Frenchman Jean-Eric Vergne were ninth and 10th respectively for Toro Rosso.
There was disappointment for Brazilian Felipe Massa, whose 200th race start did not even last a lap.
The Williams driver spun to avoid slamming at speed into Raikkonen's car as it bounced off the barriers and returned to the track, but there was still contact and too much damage to make the re-start.