After starting from ninth on the grid, Envision Racing driver Cassidy delivered a masterclass around the streets of the Principality to claim his third victory of the season.
Porsche's Wehrlein, meanwhile, could only manage 10th after starting from 12th to slip 21 points adrift of Cassidy who was joined on the podium by Jaguar TCS Racing's Mitch Evans and Jake Dennis for Avalanche Andretti.
“I can't believe it, it is unbelievable,” said Cassidy.
“That wasn't easy. I don't think we were the fastest but I'm really happy at how I managed that.”
It meant Fenestraz started from second on the grid, with Nissan team-mate Norman Nato behind him in third.
Off the line, Hughes made the better start and led into Sainte Devote, whilst Dan Ticktum moved into fourth place after overtaking Maximilian Gunther early in the first lap.
Whilst the first lap was relatively clean, on lap two, Cassidy overtook both Oliver Rowland and Jake Dennis into the Grand Hotel Hairpin to take seventh place.
Rowland, though, was another high mover as he was sixth at the end of lap two after starting 13th, only to drop to 10th a lap later after taking attack mode.
The third lap saw the first DNF when Andre Lotterer slowly went off track at Antony Noghes due to damage sustained to his front wing following contact with NEOM McLaren's Rene Rast.
By the end of lap seven, Cassidy was up to fourth after making moves on Evans and Dennis initially two laps earlier at the Grand Hotel Hairpin, before easing past Ticktum and Nato at Casino Square soon after.
When Cassidy and Nato used their attack mode on lap nine, it allowed NIO 333 driver Ticktum to take the lead of the race for a short time.
When Evans also used attack mode on lap 14, he first passed Dennis into second place before soon claiming the lead off Cassidy at the start of the next lap.
After António Félix da Costa retired on lap 16 following a minor collision with Sam Bird at the entrance of Tabac, a further lead change occurred when Cassidy passed Evans into Mirabeau.
When Maximilian Gunther stopped on the outside of the run-up towards Massenet after a failed overtake on Ticktum resulted in him hitting the back of the NIO 333 car, it brought out the Safety Car.
When racing resumed with five laps to go, and with Cassidy leading from fellow Kiwi Evans and Dennis third, it resulted in a sprint to the finish between the championship contenders.
The charge, however, was halted on lap 28 when Nico Müller stopped on track after making contact with Bird at Sainte Devote, leading to a second Safety Car period, and the field being forced to finish behind the vehicle.
Cassidy has now scored back-to-back wins and has a healthy lead in the standings ahead of FE's return on June 2-4 in Jakarta, with the double-header kicking off with FP1 at 18:25 AEST/15:25 local time.