Lucas Ocampos scored an 87th-minute winner as Monaco opened up a three-point cushion at the Ligue 1 summit with a 2-1 victory over Saint-Etienne.