Les Lions Indomptables took the lead in the 29th minute through Jean-Charles Castelletto, but Serbia then scored three times without reply through Strahinja Pavlovic, Sergej Milinkovic-Savic and Aleksandar Mitrovic to take control of the contest.
Cameroon had not finished, though, and scored twice in the space of three minutes through Vincent Aboubakar and Eric Maxim Choupo-Moting to level the scores at 3-3.
The result has left Serbia in fourth spot in Group G, level on points with third-placed Cameroon, with both sides two points behind the top two Brazil and Switzerland, who will meet later.
Serbia will take on Switzerland in their final match in the section on Friday, while Cameroon will face Brazil.
Serbia had the first half-chance in the sixth minute when Mitrovic climbed highest inside the Cameroon box, but the striker's header cleared the crossbar.
Mitrovic then carved out another opportunity for himself in the 11th minute with brilliant work inside the penalty box, but the Fulham forward fired his effort against the post.
Cameroon's first shooting chance arrived in the 16th minute when Nicolas N'Koulou found space outside the Serbia box, but the number three's strike was always rising over the crossbar.
Mitrovic had another golden chance in the 17th minute when the ball bounced for the 28-year-old inside the Cameroon box, with the striker firing narrowly wide of the post.
Serbia goalkeeper Vanja Milinkovic-Savic then had to keep out a strike from Pierre Kunde, with Cameroon starting to cause problems in the final third following a slow start.
Cameroon took the lead in the 29th minute of the contest when Castelletto tapped home at the far post following a corner, with N'Koulou flicking the ball towards his teammate.
Vanja Milinkovic-Savic had to make a smart save to keep out a strike from Kunde in the 43rd minute, but Serbia levelled the scores in stoppage time at the end of the first period when Pavlovic headed a free kick from Tadic into the bottom corner of the net.
Serbia then took the lead shortly after, with Sergej Milinkovic-Savic finding space outside the Cameroon box before smashing it past Devis Epassy, who started ahead of Andre Onana between the sticks, with the latter having a disagreement with Cameroon head coach Rigobert Song, which has led to him leaving the squad.
Mitrovic had one deflected wide of the post in the final moments of the first half, with Cameroon all over the place in a defensive area.
Serbia had their third in the 53rd minute of the match when an excellent team move ended with Mitrovic sliding the ball into the back of the net following a pass from Andrija Zivkovic.
Cameroon had a chance to answer back just before the hour when Bryan Mbeumo delivered a cross towards Choupo-Moting, but the Bayern Munich forward could not make contact.
Song's side were not finished, and they scored a second in the 64th minute when Aboubakar broke into an advanced position before scooping the ball over the onrushing goalkeeper; it was initially ruled offside, but the VAR check revealed that the goal would stand.
Cameroon then levelled it at 3-3 when Aboubakar raced down the right before picking out Choupo-Moting, who finished into the bottom corner of the net.
Mitrovic brought a smart save from Epassy in the 76th minute before Sergej Milinkovic-Savic fired over the crossbar, with Serbia looking for a fourth, but Cameroon were also causing plenty of problems down the other end of the field.
Filip Kostic forced Epassy into a smart save in the 88th minute, before Mitrovic just missed the post with an effort during a nervy period of the contest.
Both sides were searching for a winner in the final exchanges, but the thrilling contest finished level, with Cameroon fighting back to earn a welcome point.