South Africa defeated regional rivals Zimbabwe 3-2 in a 2025 Africa Cup of Nations Group B match at the Marrakesh Stadium on Monday evening, securing a place in the last 16 of the continental tournament.
Bafana Bafana claimed the win thanks to goals from Tshepang Moremi, Lyle Foster and Oswin Appollis, clinching second place in Group B behind Egypt.
South Africa will advance to play the runner-up from Group F (one of Ivory Coast, Cameroon or Mozambique) on Sunday, 4 January in Rabat.
As for the Warriors, they finished bottom of the group and kept up their unfortunate record of elimination in the group stage in all of their Afcon tournament appearances.
South Africa threatened from early on and duly claimed the lead in the seventh minute, with Moremi’s shot-cross from the right of the penalty area deflecting off Divine Lunga and evading goalkeeper Washington Arubi to find the back of the net.
Tshepang Moremi is on fire in Morocco 😮💨🇿🇦
— SuperSport Football ⚽️ (@SSFootball) December 29, 2025
Bafana Bafana strike first in the COSAFA derby 💥
📺 Stream #TotalEnergiesAFCON2025 on DStv: https://t.co/B0jLrQW5cc@10bet_ZA pic.twitter.com/FYKOLue1lf
Zimbabwe levelled the game in the 19th minute via their No.19, Tawanda Maswanhise, who dribbled skilfully into a shooting position – leaving a couple of defenders in his wake – before firing a low drive beyond the right hand of goalkeeper Ronwen Williams.
The Warriors have a response for Bafana Bafana's opener 😲
— SuperSport Football ⚽️ (@SSFootball) December 29, 2025
It's game on in Group B 🇿🇼🇿🇦
📺 Stream #TotalEnergiesAFCON2025 on DStv: https://t.co/B0jLrQWD1K pic.twitter.com/OStsnPbnDt
The Warriors should have gone ahead 10 minutes later when Jonah Fabisch whipped in a great cross from a free kick, picking out the unmarked Munashe Garananga, but the big defender put his header over the crossbar.
Locked at 1-1 at the interval, Bafana Bafana made a change at the start of the second half by introducing Bathusi Aubaas to add some extra steel and stability in midfield.
South Africa reclaimed the ascendancy in the 50th minute, as Lyle Foster latched onto a poor back header from Lunga and bravely beat Washington Arubi to the bouncing ball to head into an empty net for 2-1.
Divine Lunga costs the Warriors once again 🫣
— SuperSport Football ⚽️ (@SSFootball) December 29, 2025
Lyle Foster stays committed to put South Africa ahead 🇿🇦
📺 Stream #TotalEnergiesAFCON2025 on DStv: https://t.co/B0jLrQWD1K pic.twitter.com/adK4C0qEPi
The Warriors responded with a triple change on the hour mark – sending on Tawanda Chirewa, Macauley Bonne and Junior Zindoga – and they nearly claimed a second equaliser from Maswanhise a few minutes later, but his low drive rebounded off the base of the post.
Zimbabwe then scored out of nowhere in the 74th minute to level the game at 2-2. Chirewa played a brilliant pass to put Maswanhise in on goal – his shot was saved by the legs of Williams, but the rebound hit Aubrey Modiba and travelled into the net for an own goal.
The worst way to concede 🫣
— SuperSport Football ⚽️ (@SSFootball) December 29, 2025
📺 Stream #TotalEnergiesAFCON2025 on DStv: https://t.co/B0jLrQW5cc pic.twitter.com/PM8QUgRVd3
More drama followed when the Warriors’ Marvelous Nakamba was guilty of a bizarre hand-ball in his own 18-yard area, handing South Africa a penalty (which was awarded after a VAR check).
Appollis took the spot kick in the 82nd minute and confidently struck the ball into the bottom corner to restore the lead at 3-2.
How it started 🆚 How it ended
— SuperSport Football ⚽️ (@SSFootball) December 29, 2025
Sharp-shooter Appollis converts from the spot 🎯
📺 Stream #TotalEnergiesAFCON2025 on DStv: https://t.co/B0jLrQW5cc pic.twitter.com/eq3JVbnsyX
Bafana Bafana still had to weather some late scares, with Zimbabwe continuing to look dangerous whenever they attacked, but ultimately Hugo Broos’s side emerged victorious.
Zimbabwe (1) 2 (Maswanhise 19’, Modiba og’ 74’)
South Africa (1) 3 (Moremi/Lunga og 7’, Foster 50’, Appollis 82’ pen)
Zimbabwe: W. Arubi, B. Galloway, G. Takwara, M. Garananga (E. Jalai 75’), J. Fabisch (T. Chakuchichi 89’), B. Antonio (J. Zindoga 60’), M. Nakamba, D. Msendami (T. Chirewa 59’), D. Lunga, P. Dube (M. Bonne 60’), T. Maswanhise
South Africa: R. Williams, K. Mudau, S. Ngezana, M. Mbokazi, A. Modiba, T. Mokoena, S. Sithole (B. Aubaas 46’), O. Appollis, S. Mbule (T. Mbatha 87’), T. Moremi (M. Nkota 76’), L. Foster (E. Makgopa 73’)

