Points leader Jolyon Palmer won the Monaco GP2 Series feature race, which had to be suspended midway through after the track became blocked at the Loews hairpin.
Poleman Palmer was outsprinted off the start by Mitch Evans, who had gambled on the super-soft tyre.
He spent the first 10 laps chasing the Kiwi, briefly interrupted by a safety car to retrieve Facu Ragalia's Hilmer car, which broke down on lap one.
As Evans's tyres went off, Palmer pounced at Sainte Devote at the start of lap 11, and pulled well clear as Evans fell back into the clutches of Palmer's DAMS team-mate Stephane Richelmi.
The race required a red flag after 12 laps when Rene Binder hit his Arden team-mate Andre Negrao into a spin at Loews. With Artem Markelov getting stranded on the apex, the track was blocked.
Even after the red flags flew, there was drama as a number of cars had overheated while queuing and lapsed into safe mode. Third placed Richelmi was affected, as was 10th-placed Alexander Rossi, but all were able to resume after push-starts.
Following a restart behind the safety car, and after a huge delay to sort out the race order, Palmer pulled away from Evans, who had changed onto soft tyres during the stoppage.
Another safety car was required on lap 25, when Julian Leal's attempted pass on Raffaele Marciello ended with Leal in the tyre wall at the Nouvelle Chicane.
All the frontrunners, bar ART's Stoffel Vandoorne, took the opportunity to pit. As he left the pits, Palmer appeared to clip his team-mate Richelmi's wheel, which bounced across the pitlane and almost hit Johnny Cecotto Jr's car.
Vandoorne led at the restart, but when he made his mandatory pitstop on lap 32, dropping to 14th, Palmer held a 3.7-second lead.
However, now on super-soft tyres, Palmer did not have his previous pace on softs. Evans and close pursuer Felipe Nasr - who started 18th but stopped early - closed the gap relentlessly in the closing laps, but fell just short, all three within 0.6s at the finish.
"A difficult race, so much chaos, but I was able to win it," summed up Palmer.
Evans added: "The red flags turned everything upside down. I was closing at the end there, but Jolyon has been flawless all weekend and deserves it."
Stefano Coletti was on course for at least second place, after pulling stunning passes on Nasr and Evans at Anthony Noghes corner, but when he tried the same move on an out-of-position Simon Trummer, in an attempt to catch Palmer, Trummer turned in and took them both out.
Cecotto finished fourth, ahead of Trident team-mate Sergio Canamasas (who was a lap down before the red flag), Arthur Pic, Rio Haryanto and Richelmi, who will start Saturday's sprint race from pole after being delayed in the pits by Palmer.
Results - 40 laps: Pos Driver Team Time/Gap 1. Jolyon Palmer DAMS 1h38m31.193s 2. Mitch Evans Russian Time +0.427s 3. Felipe Nasr Carlin +0.653s 4. Johnny Cecotto Jr Trident +2.175s 5. Sergio Canamasas Trident +2.884s 6. Arthur Pic Campos +6.187s 7. Rio Haryanto Caterham +8.718s 8. Stephane Richelmi DAMS +9.594s 9. Adrian Quaife-Hobbs Rapax +9.785s 10. Tio Ellinas MP +10.187s 11. Daniel de Jong MP +10.689s 12. Raffaele Marciello Racing Engineering +11.727s 13. Conor Daly Lazarus +12.291s 14. Stoffel Vandoorne ART +12.705s 15. Kimiya Sato Campos +26.761s 16. Alexander Rossi Caterham +29.166s 17. Nathanael Berthon Lazarus +56.107s Retirements: Artem Markelov Russian Time 35 laps Rene Binder Arden 35 laps Simon Trummer Rapax 31 laps Stefano Coletti Racing Engineering 31 laps Takuya Izawa ART 31 laps Julian Leal Carlin 24 laps Andre Negrao Arden 11 laps Daniel Abt Hilmer 9 laps Facu Regalia Hilmer 0 laps