The RSF-backed Prema driver finished second just over a second behind team-mate and new points-leader Felix Rosenqvist.
The pair, who raced in tandem from start to finish, was followed over the line by Lance Stroll to complete a Prema 1-2-3.
Dennis pulled off a lightning getaway to launch himself ahead of team-mates Nick Cassidy and Stroll to chase after Rosenqvist.
But - despite two short safety car periods - the race one winner was never able to get close enough to mount a challenge.
Rosenqvist mastered both restarts to take a relatively comfortable victory while erstwhile championship leader Antonio Giovinazzi dropped from fifth at the start to finish eighth.
The Italian now trails Rosenqvist by 13.5 points in the standings, 21 clear of Charles Leclerc in third.
The Van Amersfoort driver made a slightly better fist of the race than his title rival climbing from 10th at the start to finish seventh. Dennis's podium finish moves him to within 27.5 points of the Monegasque.