LIVE UPDATE: Bafana Book Round of 16 Place After 3–2 Win
Bafana Bafana beat Zimbabwe 3–2 in a dramatic Group B decider in Marrakech.
Tshepang Moremi and Lyle Foster put South Africa ahead twice before Zimbabwe fought back through Tawanda Maswanhise and an own goal.
Oswin Appollis’ late penalty proved decisive after a VAR handball call.
Zimbabwe hit the post and pushed hard late, but South Africa held firm.
The win sends South Africa into the AFCON Round of 16, while Zimbabwe exit AFCON 2025.
- In the other Group B Match, Angola drew nil all with Egypt.
Follow our live feed for minute-by-minute action, key stats, live Group B table movements and the latest score updates. All eyes are on Marrakech as South Africa national football team and Zimbabwe national football team meet in a decisive Group B showdown at the Africa Cup of Nations for a place in the Round of 16. This is the first-ever AFCON finals meeting between the Southern African rivals — and qualification is on the line.
🔴 LIVE MATCH REPORT & SCORE UPDATE | South Africa 3-2 Zimbabwe| Full Time
🟠LIVE GROUP B LOG TABLE STANDINGS, LATEST RESULTS
Group B – Standings & Qualification
| # | Team | P | GD | Pts | Status |
|---|---|---|---|---|---|
| 1 | 🇪🇬 Egypt | 3 | +2 | 7 | ✅ Qualified (Group Winner) |
| 2 | 🇿🇦 South Africa | 3 | +1 | 6 | ✅ Qualified (Runner-up) |
| 3 | 🇦🇴 Angola | 3 | −1 | 2 | 🟡 Can progress as 3rd (ranking dependent) |
| 4 | 🇿🇼 Zimbabwe | 3 | −2 | 1 | ❌ Eliminated |
EGYPT 0-0 ANGOLA
🟨 LIVE TEXT
Next opponent: Bafana will face the runner-up in Group F, which is currently shaping up as either Ivory Coast national football team or Cameroon , with both tied on four points. In Group F, Mozambique remain in the mix, while Gabon are already eliminated.
90’
Chance, Zimbabwe! Tawanda Chirewa fires a right-footed effort from outside the box, but it flies off target.
90’
Blocked! Tawanda Maswanhise’s left-footed strike from the centre of the box is charged down after a headed assist from Macauley Bonne.
90’
Play resumes following the brief stoppage.
89’
Delay in play as Siyabonga Ngezana receives treatment for an injury.
88’ 🔄
Substitution — Zimbabwe
Tadiwanashe Chakuchichi replaces Jonah Fabisch.
87’
Offside, Zimbabwe. Macauley Bonne is flagged again as the Warriors push for an equaliser.
86’ 🔄
Substitution — South Africa
Thalente Mbatha comes on to replace Sipho Mbule.
84’
Saved! Macauley Bonne gets a right-footed shot away from the right side of the box, but Ronwen Williams gathers safely after a pass from Gerald Takwara.
82’ ⚽ GOAL — SOUTH AFRICA!
Zimbabwe 2–3 South Africa
Oswin Appollis keeps his nerve and converts the penalty, drilling a right-footed shot into the bottom-right corner.
81’ 🟨
Yellow card for Marvelous Nakamba for handball.
80’
VAR DECISION: Penalty awarded to South Africa.
79’
Penalty conceded by Marvelous Nakamba after a handball in the box.
79’
Close! Mohau Nkota’s left-footed effort from outside the box flashes just wide following a corner.
79’
Another chance! Evidence Makgopa’s header from close range goes narrowly wide after the set piece.
78’
Corner to South Africa, conceded by Emmanuel Jalai.
77’
Missed! Macauley Bonne heads over from the right side of the box following a Zimbabwe set piece.
77’
Offside, Zimbabwe. Macauley Bonne is flagged as the Warriors press forward.
77’
Free kick to Zimbabwe on the right wing after a foul by Teboho Mokoena on Tawanda Maswanhise.
76’ 🔄
Substitution — South Africa
Mohau Nkota replaces Tshepang Moremi.
76’
Offside again for Zimbabwe, this time Junior Zindoga caught beyond the last defender.
75’ 🔄
Substitution — Zimbabwe
Emmanuel Jalai comes on for Munashe Garan’anga.
75’
Offside, Zimbabwe. Macauley Bonne strays beyond the defensive line.
73’ ⚽ GOAL — ZIMBABWE!
Zimbabwe 2–2 South Africa
Own goal by Aubrey Modiba as Zimbabwe draw level in dramatic fashion.
73’
Saved! Tawanda Maswanhise’s right-footed effort from the right side of the box is kept out by Ronwen Williams after a through ball from Tawanda Chirewa.
72’
Foul by Tshepang Moremi as Zimbabwe win possession in midfield.
70’
Free kick to South Africa in the attacking half after Sipho Mbule is fouled by Marvelous Nakamba.
68’
Saved! Teboho Mokoena lets fly from distance, but Washington Arubi gathers comfortably in the centre of the goal.
67’
Another save! Sipho Mbule’s long-range strike is tipped away by Arubi at his top-left corner after an assist from Oswin Appollis.
66’
Free kick to South Africa in the defensive half as Bathusi Aubaas is fouled by Divine Lunga.
65’
Close! Tshepang Moremi curls a left-footed effort from outside the box just wide of the right post.
64’
Macauley Bonne rises well but heads over from the centre of the box for Zimbabwe.
64’
Close! Macauley Bonne rises in the centre but heads over the bar for Zimbabwe.
64’
Offside, South Africa. Lyle Foster is flagged as Bafana push forward again.
64’
So close, Zimbabwe! Tawanda Maswanhise smashes a right-footed effort from outside the box against the right post after an assist from Jonah Fabisch.
62’
Free kick to Zimbabwe on the right wing as Tawanda Maswanhise is fouled by Aubrey Modiba.
60’ 🔄
Triple substitution — Zimbabwe
Macauley Bonne replaces Prince Dube.
Junior Zindoga comes on for Bill Antonio.
Tawanda Chirewa replaces Daniel Msendami.
58’
Saved! Oswin Appollis cuts in from the left and forces a stop from Washington Arubi, with Lyle Foster providing the assist.
55’
Corner to Zimbabwe after Bathusi Aubaas concedes under pressure.
52’
Play resumes after the brief stoppage.
51’
Delay in play as Lyle Foster receives treatment following a knock.
50’ ⚽ GOAL — SOUTH AFRICA!
Zimbabwe 1–2 South Africa
Lyle Foster rises in the centre of the box and powers a header into the bottom-right corner to put Bafana back in front.
49’
Foul by Sipho Mbule gives Zimbabwe a free kick in their defensive half, won by Bill Antonio.
48’
Offside! Daniel Msendami is caught beyond the last defender as Zimbabwe try to break.
46’
Free kick to South Africa on the right wing after Khuliso Mudau is fouled.
46’
Free kick to South Africa on the right wing after Khuliso Mudau is fouled by Daniel Msendami.
46’ 🔄
Substitution — South Africa
Bathusi Aubaas comes on to replace Sphephelo Sithole as Bafana look for more drive in midfield.
46’
Second half underway in Marrakech. Zimbabwe 1–1 South Africa as play resumes.
HALF-TIME STATS
Zimbabwe 1–1 South Africa
Possession: ZIM 31% – 69% RSA |
Shots: 4–8 | On target: 1–4 |
Box touches: 8–13 | Saves: 3–0 |
Aerials won: 3–12 | Fouls: 8–7 |
Pass accuracy: 63% – 84% | Corners: 1–1 |
Bookings: 0 – 1 (RSA)
Summary:
South Africa dominate possession and chances; Zimbabwe absorb pressure and stay dangerous on the break.
45’+4
⏸ HALF-TIME
Zimbabwe 1–1 South Africa at the break in Marrakech.
45’+2
Free kick to Zimbabwe on the right wing after a foul by Aubrey Modiba on Bill Antonio.
45’+1
Sipho Mbule wins a free kick for South Africa in the defensive half as added time continues.
45’+1
⏱ Added time: The fourth official indicates 3 minutes to be played.
45’
Free kick to South Africa in the defensive half as Sipho Mbule is fouled.
45’
Another foul by Marvelous Nakamba as Zimbabwe concede possession late in the half.
40’
Free kick to South Africa in the defensive half after Khuliso Mudau is fouled by Daniel Msendami.
40’
Saved! Sphephelo Sithole’s header from the centre of the box is kept out low to the right by Washington Arubi, following a cross from Aubrey Modiba.
39’
Free kick for South Africa in the attacking half as Sipho Mbule is fouled by Marvelous Nakamba.
38’
Close! Siyabonga Ngezana’s header from a set piece sails just over the bar after another delivery from Aubrey Modiba.
LIVE STATS (Quick Snapshot)
Possession: ZIM 31% – 69% RSA |
Shots: 4–6 | On target: 1–2 |
Box touches: 6–10 | Saves: 1–0 |
Aerials: 3–7 | Fouls: 4–5 | Corners: 1–1
37’
Free kick to South Africa in the attacking half after Aubrey Modiba is fouled by Tawanda Maswanhise.
36’
Corner for South Africa. Munashe Garan’anga concedes under pressure.
35’
Free kick to Zimbabwe in their defensive half after a foul by Lyle Foster on Marvelous Nakamba.
34’ 🟨
Yellow card! Sipho Mbule is booked for a bad foul.
33’
Another foul by Sipho Mbule as the tempo rises in midfield.
32’
Ronwen Williams is fouled and wins a free kick for South Africa in the defensive half.
32’
Play resumes after the stoppage.
31’
Brief delay as Daniel Msendami receives treatment for an injury.
31’
Free kick to Zimbabwe in the defensive half after a foul by Tshepang Moremi.
29’
Chance, Zimbabwe! Munashe Garan’anga meets Jonah Fabisch’s cross from a set piece but heads just over the bar from the centre of the box.
28’
Missed! Munashe Garan’anga breaks forward on the counter and fires a left-footed effort from outside the box, but it drifts off target.
26’
Free kick to South Africa in the defensive half as Sipho Mbule is fouled.
26’
Foul by Marvelous Nakamba as Zimbabwe are penalised in midfield.
18’ ⚽ GOAL — ZIMBABWE!
Zimbabwe 1–1 South Africa
Tawanda Maswanhise levels it up with a composed right-footed finish from the centre of the box, finding the bottom-left corner. Jonah Fabisch provides the assist.
17’
Corner to Zimbabwe after Siyabonga Ngezana concedes under pressure.
16’
Chance for South Africa! Sphephelo Sithole rises in the centre but heads over from Aubrey Modiba’s cross.
14’
Play resumes after the brief stoppage.
13’
Delay in play as Bill Antonio receives treatment for an injury.
12’
Blocked again! Oswin Appollis’ long-range effort is charged down after a pass from Sipho Mbule.
6’
Saved! Oswin Appollis fires a right-footed shot from the centre of the box, but the effort is comfortably saved.
5’
Foul by Teboho Mokoena as Bill Antonio wins a free kick for Zimbabwe in the defensive half.
4’
Zimbabwe chance! Tawanda Maswanhise’s right-footed effort from the right side of the box is blocked after a neat assist from Prince Dube.
2′ Chance, South Africa! Sipho Mbule fires a right-footed effort from the right side of the box but it flashes just wide. Khuliso Mudau with the assist.
2’
Zimbabwe get the match underway — we’re live in Marrakech as the Warriors kick off against Bafana Bafana.
1’
Line-ups are confirmed and both teams are on the pitch, going through national anthems ahead of kick-off at the Grand Stade de Marrakech.
Bafana Bafana vs Warriors LINEUPS for Today’s AFCON Match
Bafana Bafana Starting XI:
Williams, Mbokazi, Ngezana, Mudau, Modiba, Mokoena, Sithole, Mbule, Moremi, Appollis, Foster
Subs:
Smith, Ndamane, Mofokeng, Nkota, Mokwana, Aubas, Chaine, Mbatha, Kabini, Sibisi, Goss, Makgopa, Campbell, Matuludi
Zimbabwe Starting XI:
Arubi, Garan’anga, Takwara, Galloway, Lunga, Msendami, Nakamba, Antonio, Fabisch, Maswanhise, Dube
Subs:
Bonne, Chakuchichi, Chipezeze, Chirewa, Fusire, Jalai, Mapisa, Mauchi, Mudimu, Murwira, Navaya, Padera, Wadi, Zindoga
Zimbabwe & South Africa Team formations explained:
Bafana Bafana line up in a 4-2-3-1, designed for ball retention and sustained pressure. South Africa are set up to control territory and possession, pin Zimbabwe back and patiently work openings.
Zimbabwe have set up in a 3-5-2, a shape that quickly drops into a 5-3-2 without the ball. The Warriors are clearly prioritising defensive solidity, inviting pressure and looking to strike on transitions rather than dominate possession.


Dressing Room Pictures: Bafana are wearing green today, Zimbabwe all yellow.

FINAL WORDS BEFORE KICK-OFF
“We know we are facing a highly motivated opponent.” Hugo Broos Bafana Bafana Head Coach
“It won’t be easy — but if we bring our A-game, we will make it through.” Nkosinathi Sibisi Bafana Bafana Defender
Bafana Bafana vs Zimbabwe — Key Stats (AFCON 2025 | Season So Far)
Based on group-stage matches played to date
| Stat | 🇿🇼 Zimbabwe | 🇿🇦 South Africa |
|---|---|---|
| Goals scored | 2 | 2 |
| Goals conceded | 3 | 2 |
| Total shots | 19 | 23 |
| Shots on target | 7 | 10 |
| Shots off target | 12 | 13 |
| Blocked shots | 6 | 5 |
| Passing accuracy | 60.68% | 86.93% |
Bafana Bafana — What they need
Win or draw sends South Africa into the knockouts.
A place in the last 16 would be Bafana’s third straight AFCON knockout appearance.
Hugo Broos’ side beat Angola before a narrow 1–0 loss to Egypt.
Captain Ronwen Williams is set to equal Shaun Bartlett for AFCON appearances (14).
Key form note:
Bafana have not won a must-win final group match since 2002, but remain favourites on pedigree and squad depth.
Zimbabwe Warriors — All or nothing
Zimbabwe must win to qualify — a historic first AFCON knockout berth.
Drew 1–1 with Angola after losing 2–1 to Egypt.
Knowledge Musona (35) scored last time out, becoming Zimbabwe’s oldest AFCON goalscorer.
Zimbabwe have never kept a clean sheet at AFCON finals — but have scored in four straight matches.
Big stat:
All of Zimbabwe’s AFCON wins have come on matchday three.
Head-to-Head Snapshot
Meetings: 19
South Africa: 8 wins
Zimbabwe: 6 wins
Draws: 5
Last AFCON-era finals meeting: First ever
The bottom line
Bafana Bafana hold the advantage — but history shows Zimbabwe often save their best for last. With qualification on the line, expect a tight, emotional, high-stakes Southern African derby where one goal could define the tournament for either side.


I hope 🤞 Bafana win