Hamilton retired with a damaged car but Rosberg, blamed by his bosses and booed by the crowd on the podium, finished second to extend his lead to 29 points with seven of the 19 races remaining.
The victory, on a surprisingly dry afternoon at a circuit famed for rapid changes in conditions, was Ricciardo’s second in succession and third of his first season with the reigning Formula One champions.
It was also his team’s second in succession in Belgium after four-times world champion Sebastian Vettel triumphed last year and set off a run of nine wins in a row.
Finland’s Valtteri Bottas was third for Williams.
“It’s been a really good day for us on a track we didn’t expect to get maximum points from, so yeah, it’ll keep us smiling for a while,” said Ricciardo, who led for much of the race unlike his previous wins.
His endeavours were still almost a sideshow to the major talking point, a further stirring up of already troubled waters at Mercedes.
The two team mates had been expected to dominate the race after qualifying on the front row but the intense rivalry between them blew up in their face.
“We just had a meeting about it and he basically said he did it on purpose. He said he did it on purpose,” Hamilton told reporters after a post-race meeting with Rosberg and bosses.
“He said he could have avoided it. He said ‘I did it to prove a point’”
Mercedes motorsport head Toto Wolf slammed the incident as ‘absolutely unacceptable’.
“Lap number two of a long race and a crash between two team-mates, we have often discussed the situation and it happened today,” he told the BBC.
“You don’t try to overtake with the knife between your teeth in lap number two and damage both cars.”
The team’s non-executive chairman Niki Lauda was also fuming.
“It is unacceptable. If these things happen at the end of the race, when they are fighting for the win then you discuss it but in the second lap to hand the victory to Red Bull,” said the former champion.
“I thought they were clever enough to know that but obviously they aren’t.”
Hamilton had passed pole-sitter Rosberg at the start but his race was effectively over moments later when Rosberg tried to retake the lead in a misjudged move that could prove extremely costly for Hamilton.
The German’s front wing made contact with Hamilton’s rear tyre and punctured it, leaving the Briton having to nurse his car back to the pits in a trail of tyre debris.
“Nico hit me. Nico hit me,” Hamilton exclaimed over the car radio.
He rejoined a minute adrift of Rosberg. After complaining that he had no downforce and repeatedly asking the team to save the engine, the Briton was recalled to the pits five laps from the end and retired.
Some of the debris from the tyre’s carcass later snagged on Rosberg’s radio mast, flapping in his face as he tried to clear it away at 300kph.
Mercedes have been struggling to keep the peace between the evenly-matched team mates since the start of the year and arrived at Spa after a controversy in Hungary in July, where a ‘team orders’ controversy left Rosberg aggrieved.
Hamilton had started last in that race and finished third, with Rosberg going from pole to fourth and complaining that his team mate had not let him through.
Then, as on Sunday, the team made clear their support for Hamilton and they will have their work cut out again in the days ahead.
“This is a decisive moment in the battle between the two of them and for the team. Lewis is very upset, we kept him out there for a long time with a damaged car. He will recover quickly. It is going to be handled,” said Wolff.
Rosberg has 220 points to Hamilton’s 191 with Ricciardo moving closer on 156. Mercedes remain comfortably in front in the constructors’ standings with 411 points to Red Bull’s 254.
Kimi Raikkonen finished fourth for Ferrari, the first time he has beaten Spanish team mate Fernando Alonso this season, with Vettel fifth.
(Reporting by Alan Baldwin, editing by Martyn Herman and Pritha Sarkar)