Mladen Krstajic's team entered the match knowing that a victory would see them advance to the round of 16, but Granit Xhaka's second-half effort cancelled an early header from Aleksandar Mitrovic, before Xherdan Shaqiri won it for Switzerland in the final minute.
Switzerland have joined Brazil on four points, while Serbia sit third on three points ahead of the final matchday, which sees Switzerland take on already-eliminated Costa Rica, and Serbia lock horns with Brazil.
Read how it all unfolded in Sports Mole's minute-by-minute live commentary of the action below.
SERBIA: Stojkovic; Ivanovic, Milenkovic, Tosic, Kolarov; Matic, Milivojevic; Tadic, Milinkovic-Savic, Kostic; Mitrovic
SWITZERLAND: Sommer; Lichtsteiner, Schar, Akanji, Rodriguez; Behrami, Xhaka; Shaqiri, Dzemaili, Zuber; Seferovic
Friendship over rivalry – here's a Serbian fan wrapping up a Switzerland fan in a flag! 🤣 pic.twitter.com/aGplsVrWSz— Goal (@goal) June 22, 2018