The RSF-backed driver made up three places at the start but ran into trouble part way round the lap at the San Francisco bend where Daniel Juncadella's stricken car awaited.
The Spaniard had been left stranded after colliding with the barrier in a neck-and-neck battle for second with Antonio Giovinazzi.
With nowhere to go, Ryan Tveter, who was vying for position with Dennis, ploughed straight into the Fortec car. Callum Ilott and Alexander Albon also got caught up in the incident which brought out the safety car for a lap while the aftermath was cleared.
Dennis survived the disruption, circulating in 11th when racing resumed through to the finish.
Giovinazzi - who had snatched the lead from Felix Rosenqvist at Lisboa shortly after the restart - took the chequered flag but was subsequently dropped to 10th in the race classification after being handed a 20-second penalty for his part in the opening lap incident.
The Carlin's driver's downfall handed the win - and pole position for tomorrow's grand prix - to Ronsenqvist. Charles Leclerc and Alexander Sims - who started from row seven with Dennis - picked up the final two podium places.
"It wasn't the most exciting of races for me," said Dennis. "I made up a few places at the start but after that I just didn't seem to have the straight-line speed to make further progress. Hopefully I can get a better result tomorrow."