Click here for World Cup groups and standings
Cameroon led through central defender Jean-Charles Castelletto’s 29th minute tap-in but also conceded twice in quick succession.
Strahinja Pavlovic scored the equaliser on a header in the first minute of first-half stoppage time and, two minutes later, midfielder Sergej Milinkovic-Savic struck from 20 meters.
Striker Aleksandar Mitrovic made it 3-1 in the 53rd at Al Janoub Stadium.
Cameroon coach Rigobert Song dropped goalkeeper Andre Onana for the match. It was not immediately clear why Onana was left out amid reports it was for disciplinary reasons.
Onana, who has 34 international caps and plays for Inter Milan, responded by posting the lineup on Instagram.
His absence overshadowed a fine comeback performance when all the talk should have been about Aboubakar.
Aboubakar, the top scorer at the African Cup of Nations, turned the game when he came off the bench in the 55th minute.
First, he calmly guided the ball over goalkeeper Milinkovic-Savic. The goal was given offside but awarded following a video review.
Then, a quick break sliced open the Serbian defense as Aboubakar sprinted down the right and squared the ball to give Choupo-Moting an easy goal.
Both sides lost their opening games, with Serbia beaten 2-0 by Brazil and Cameroon losing 1-0 to Switzerland.
Cameroon took the lead when Pierre Kunde’s corner from the left was flicked on by Nicolas Nkoulou to the back post and found his fellow central defender Castelletto unmarked.
Castelletto dropped to his knees to kiss the grass then pointed to the sky, as the entire bench swarmed across the field to engulf him in celebration.
The Serbian bench did the same when central defender Pavlovic headed the equaliser from a free kick by Dusan Tadic.
Serbia’s second goal came after Napoli’s highly-rated midfielder Andre-Frank Zambo Anguissa got into a tangle trying to clear the ball.
The ball found its way to Sergej Milinkovic-Savic on the edge of the penalty area, who shot into the bottom right corner.
Mitrovic then made no mistake as Serbia prised open Cameroon with three passes and he stroked the ball into an empty net for his seventh goal in six games for his nation and 51st overall.
Then it was the turn of Serbia’s defense to fall apart.