Zeb Taia's two tries in six second-half minutes helped Catalan Dragons come from behind to go top of Super League.
Kieran Dixon and Tony Clubb went over for London Broncos, Morgan Escare and Steve Menzies replying for Dragons, but the home side led 12-10 at half-time.
Michael Witt, who added eight points with the boot, went over for London as did Chad Randall, while Frederic Vaccari kept the visitors in touch.
Taia scored in the 62nd and 68th minute to put the Catalans top by a point.
VIEW FROM THE DRESSING ROOM
London coach Tony Rea:
"We were at our best in terms of our effort and energy but our execution let us down from start to finish.
"I think every player across the board made an error at some stage and that is very frustrating.
"You are happy to lose if you have given your best but I do not think we did tonight. We stayed strong as a team and had a fantastic attitude but that was not enough.
"I thought Catalan played error-free rugby for the whole game and that proved the difference."
Catalan head coach Laurent Frayssinous:
"It was a very scrappy game and we were certainly not at our best.
"But I said before the game that the team that showed the most hunger would be the team that won and that was us.
"I thought our forwards were immense and that was a real strength for us, especially as the game wore on in the second half.
"Easter is always a tough period for us because of the travel and the most important thing was just to get the two points."
London Broncos: Dorn; O'Callaghan, Channing, Sarginson, Dixon; Witt, Gower; Cook, Lee, Bryant, Rodney, Bailey, Kaufusi.
Replacements: Lovell, Clubb, Randall, Krasniqi.
Catalan Dragons: Escare; Vaccari, Menzies, Millard, Pala; Pryce, Bosc; Simon, Henderson, Casty, Anderson, Taia, Baitieri.
Replacements: Maria, Pelissier, Elima, Larroyer.
Referee: Tim Roby.