A tremendous game ended in a 3-3 draw, Serbia rebounding from a 1-0 deficit to take a 3-1 lead before Cameroon rushed back to level the match.
Cameroon must now beat Brazil and hope, while a win over Switzerland should do it for Serbia.
With both sides needing a win, both went for it in an entertaining half, Serbia with the greater quality. But a well-taken corner earned Cameroon the lead, Jean-Charles Castelletto tapping home at the back post after a fine flick-on from Nicolas N’Koulou.
The setback knocked Serbia a little, but by the end of the 45, they were back in charge, scoring twice in six added minutes through Strahinja Pavlovic and Sergej Milinkovic-Savic to turn the game around and, when Aleksandr Mitrovic added a third on 53 minutes, the game looked over.
But almost immediately afterwards, Rigobert Song sent on Vincent Boubakar, who scored a glorious livener – disallowed, then allowed by VAR and the semi-automatic offside situation – then set up Eric-Maxim Choupo-Moting for a tap-in at the end of a terrific counter.
A draw does little for both sides, but the World Cup now has a new best game.