Marseille have not won at Bordeaux since 1977, while their outside Champions League hopes were dealt a major blow.
Bordeaux were rewarded for creating a string of first-half chances when Kamano converted a 27th-minute penalty following Nemanja Radonjic's handball.
Marseille twice went close to levelling just before half-time through Dimitri Payet's free-kick and Boubacar Kamara's header.
Radonjic almost made amends when he headed just off target early in the second half and fired a long-range effort inches over the crossbar.
But De Preville's low angled drive found the bottom corner in the 71st minute and although Bordeaux defender Pablo was sent off after clashing with Mario Balotelli in the closing stages, the home side held on.
Bordeaux's first win in seven matches lifted them up to 11th place in the table, while Marseille remain eight points adrift of the top three with seven games to go.