Sochaux had lost its previous three league games and had not won since the middle of November, but it took the lead in the 18th minute after Sloan Privat headed in a corner.
Cedric Bakambu doubled Sochaux's tally shortly before halftime as heavy snow continued to fall at the Stade Auguste Bonal.
It got worse for Marseille immediately after the break when defender Jeremy Morel turned Sebastien Roudet's cross into his own net.
Andre Ayew pulled one back for Marseille before Sochaux's Joseph Lopy was sent off for two yellow cards.
Marseille hit the woodwork twice through Nicolas N'Koulou and Lucas Mendes but couldn't pull closer.