Why do helicopters not roll over when flying forwards?
Juan de la Cierva's first autogiro did roll over, twice, and he then applied the principle of blade flapping, a stroke of genius. Flapping is created by allowing the blade to move up and down. Depending on rotor head design this is done in different ways:


By a flapping hinge at the hub, allowing vertical rotation. 
By a teetering hinge on two-blade designs, where both blades together are hinged so they can teeter-totter, one flapping up while the other flaps down. 


The lift stays equal at both sides because of blade flapping. If the blades can freely travel up- and downwards, the forward going blade indeed experiences more lift, but as an effect of this starts to travel upwards and reduces its angle of attack. The rearward going blade experiences the reverse, less lift makes the blade descend and increases angle of attack. The lift distribution with and without flapping is depicted in this figure from Prouty, Helicopter Performance, Stability and Control:



The local angle of attack distribution of an example helicopter travelling at 115 kts looks like this:



The rearward going blade has a local AoA of 9°, not very far from stall. Increasing airspeed will at one point result in retreating blade stall, with associated loss of lift and increase of drag, and then the helicopter will start to roll over.

Notice that the reverse flow region is not really a big problem in lift creation:


It is close to the disk centre, where lift creation is minimal anyhow.
The loss of lift is reduced because of the increased AoA
Not only lift reverses, drag is negative as well: in this region the airstream actually helps to propel the blade, reducing the required profile power a bit.