The RSF-backed driver got the better of pole-sitter and Prema team-mate Felix Rosenqvist at the start to snatch the lead on the run to Turn 1 and thereafter led every lap of the race.
His winning margin after resisting race-long pressure from the Swede was 0.668s.
That pressure intensified on the final lap as Rosenqvist - himself under threat from Carlin's points-leader Antonio Giovinazzi in third - tried every trick in the book to snatch a last gasp win.
But Dennis was able to stymie his fellow title contender, sweeping across to the pit wall and his jubilant Prema crew as he took the chequered flag, leaving a frustrated Rosenqvist to settle for second.
Giovinazzi followed on to claim the final podium place a further half second behind.
"That was probably the hardest race I've competed in," said Dennis. "It was pretty intense with Felix sat on my tail from start to finish.
"But despite the pressure, as the race wore on I got the gap up to seven-tenths or so and was able to hold it between there and around half a second as he got closer, dropped back, got closer again and so on.
"Then on the second to last lap I had a bit of a scare when I made a mistake coming out of the last corner and ran wide onto the Astroturf. That left me with debris on my tyres and from there on the car was really difficult to handle which enabled him to close back up again.
"Luckily though I managed to hold on and get the win."
Dennis, who only managed to qualify 10th and 7th for the starts of the weekend's remaining races, now faces an uphill task to keep a foot in the title fight.
After race one he remains fourth in the championship, 62 points adrift of Giovinazzi who retains the lead 14.5 points clear of Van Amersfoort's Charles Leclerc who finished sixth. Rosenqvist - who starts race two this afternoon from pole - holds onto third with 279 points.