Serbia struck twice in added time before the interval through Strahinja Pavlovic and Sergej Milinkovic-Savic to turn the game on its head after Jean-Charles Castelletto had given Cameroon the lead .
Serbia went 3-1 up when Aleksandar Mitrovic scored his first goal of the tournament early in the second period.
But the Africans responded in spectacular fashion as substitute Vincent Aboubakar and Eric-Maxim Choupo-Moting both scored in the space of three minutes to haul their side level.
Cameroon avoided a record-equalling ninth successive World Cup finals defeat, but while both nations retained hopes of reaching the last 16, Brazil and Switzerland remain favourites to progress from the group.
Cameroon goalkeeper Andre Onana was controversially left out of the squad amid pre-match reports of a training ground bust-up with head coach Rigobert Song.
Inter Milan keeper Onana, first choice since 2019, was replaced by debutant Devis Epassy and the latter was grateful Mitrovic's early header looped over the crossbar.
Mitrovic then curled a shot against a post after combining with Dusan Tadic as Serbia, bidding to bounce back from their 2-0 defeat to Brazil, took control.
Cameroon, beaten 1-0 by Switzerland in their opening match, served warning on the break in the 20th minute when Pierre Kunde's shot forced Serbia goalkeeper Vanja Milinkovic-Savic into a low save.
The Africans then took the lead against the run of play when the unmarked Castelletto turned the ball home at the far post following a corner.
That sparked joyous scenes on the Cameroon bench as their replacements ran onto the pitch to celebrate, which resulted in a booking for substitute Christian Bassogog.
But with the clock ticking down in first-half added time, that joy turned to despair.
Pavlovic equalised with a towering header from Tadic's free-kick and two minutes later Sergej Milinkovic-Savic fired low into the bottom corner to put Serbia ahead.
It got worse for Cameroon early in the second period when they were carved open by a sweeping Serbia counter-attack, with Mitrovic side-footing home.
But the game took another huge swing thanks to Aboubakar. His brilliant scooped finish stood after a VAR check and he then picked out the charging Choupo-Moting for an excellent equaliser.
Mitrovic's low shot was saved by Epassy and Aboubakar was denied by Vanja Milinkovic-Savic as both sides had to settle for a share of the points.