A poor, fragmented first half ended with the two sides locked together at three points apiece, with full-back Gaetan Germain levelling matters right with a penalty right on the stroke of half-time.
Scrum-half Mathieu Belie had earlier opened the scoring for Brive on 33 minutes.
Germain struck again shortly after the restart before number nine Mathieu Loree struck a drop goal to extend the visitors' lead to six points.
Belie hit back for Brive, but Germain again responded before slotting his fourth penalty of the evening on 70 minutes.
Replacement Poutasi Luafutu had seen yellow for the home side as he made their task all the more difficult.
Full-back Julien Caminati, seizing the kicking duties from Belie, kept Brive in touch, but Racing replacement Jonathan Wisniewski landed a penalty shortly after being introduced.
There was still time for Caminati to secure a losing bonus point for Brive with the last kick of the game, but Metro secured the winning points to go fifth in the standings.