The Prema driver started from pole but lost out to fellow front row driver Mikkel Jensen when the lights went out, dropping to second.
The tardy start allowed the Dane to pull out a near one second gap before a clash between Arjun Maini and Raoul Hyman at La Source on lap two brought out the safety car and bunched the field back up.
When racing resumed, Jensen held onto the lead for another lap before Dennis pulled off a pass through Les Combes. The pair entered the complex side-by-side but it was Dennis who emerged in the lead as the Dane spun off and into the barriers.
His tenure at the front was short-lived though as Carlin's Tatiana Calderon, who had opted to start the race on wets, made full use of her advantage on the damp and greasy surface to take over.
The pair then proceeded to trade places as Dennis exploited his superior grip on the dryer parts of the circuit while Calderon - who had made her way through the field from 27th on the grid - darted by in the wetter areas.
But seven laps in - as Calderon's wets gradually gave up the ghost on the drying track - Dennis, pursued by points-leader Charles Leclerc, finally put an end to the to-ing and fro-ing to assert his authority at the head of the field.
By the end of the lap he held a 1.6-second lead which he then extended to 2.163s before the Frenchman reined him as the race drew to a close to finish just under nine-tenths in arrears.
Carlin's George Russell claimed the remaining podium place a further six seconds behind.
The win promotes Dennis to second in the standings 28.5 points behind Leclerc. Fellow Prema title contender Felix Rosenqvist finished sixth to retain third in the points while erstwhile championship leader Antonio Giovinazzi failed to finish.
The Italian, who had moved up into third, was denied the chance to complete the race after being shown the black and orange flag with only a lap to go due to a loose front wing.
After arriving at Spa at the head of the table, he leaves in fourth place, 33 points adrift of Leclerc.
"It was a good race - apart from the start - but a tough one," said Dennis after celebrating on the podium. "I was too focused on avoiding wheelspin when the lights went out so my reactions weren't as good as they should have been.
"But I got the place back OK after the restart when Jensen randomly span. Some people seem to think there was contact between us but there wasn't, I can assure you of that.
"Then Tatiana [Calderon] came into play. But I knew she didn't pose a serious threat because with plenty of laps to go it was inevitable her tyres would go off.
"The nervy bit was after that because I knew with Leclerc closing in behind I couldn't afford to make a mistake in the slippery conditions. But I had enough in hand at the end to get the win."