The Briton led from start to finish, after passing polesitter Arthur Pic off the line. Pic's DAMS car was one of several to struggle to pull away, leading to an accident-packed start which claimed several frontrunners.
Other key runners to struggle when the lights went out included Kevin Korjus (third on the grid) and Sam Bird (ninth), while fourth-placed Richie Stanaway stalled and was hit by Giovanni Venturini.
Korjus was then caught up in a first-lap crash which accounted for several more cars, including Alexander Rossi and Nico Muller, while P1 Motorsport team-mates Daniil Move and Walter Grubmuller both had to pit for repairs.
After four laps behind the safety car, Yelloly led the field away again, with Carlos Huertas and Bianchi joining him in a lead group that pulled away from the rest. Pic ran fourth until a collision with Jake Rosenzweig ended his race on lap four.
As Huertas fell away from the leader, Bianchi had a lunge into the final hairpin on lap 15, only to run wide and hand the place back to the Colombian. But a lap later the Ferrari junior driver made the move stick, and then set about eating into Yelloly's 2.9-second lead.
That gap was down to half a second in five laps, but once Bianchi was up with Yelloly he could not stay close enough to make a pass. He then slowed in the final few corners, before coming to a stop shortly after taking the chequered flag.
Huertas dropped back in the closing stages with a sick-sounding engine, handing a podium finish to Kevin Magnussen. On the final lap Huertas also fell behind Robin Frijns, who put in the charge of the race to claim fourth after ending the first lap in 17th.
Frijns had demoted Nicolay Martsenko from a lonely fifth place towards the end, but the Russian held on to take sixth, while Will Stevens - who had held Frijns off for several laps - led a queue of cars over the line at the finish to take seventh.