Guinea reached the last 16 at the Africa Cup of Nations despite losing their final Group B match 2-1 against already-eliminated Zimbabwe.
Knowledge Musona’s downward header and Kudakwashe Mahachi’s low strike put the Warriors two up at half-time.
Guinea captain Naby Keita replied with a stunning goal in Yaounde, in a match which saw referee Salima Mukansanga make history.
The Rwandan, 35, became the first woman to referee a Nations Cup game.
Guinea finish second in the group table, ahead of Malawi on head-to-head record after the Flames drew 0-0 with Senegal.
The West Africans will now face the runners-up from Group F on Monday, 24 January but will be without Liverpool midfielder Keita, who will be suspended after picking up his second booking at the tournament.
Warriors end 16-year wait for win
The opening goal came in the 26th minute when Guinea could only half-clear a corner that Never Tigere curled invitingly back into the danger zone for the unmarked Musona to glance home.
Mukansanga’s first real involvement came when she brandished her first yellow card, booking Ibrahima Cisse for a raised elbow.
Zimbabwe were able to take advantage of their lethargic opponents two minutes before the break when Syli Nationale failed to react to a quickly taken free-kick, the move eventually resulting in a low drive from Mahachi that should have been saved but instead squirmed under the body of Aly Keita.
Coached by former Arsenal forward Kaba Diawara and cheered on by several groups of noisy supporters, Guinea improved after half-time.
Skipper Keita produced the game’s one moment of true class in the 49th minute, cutting in from the right flank and unleashing an unstoppable rising left-foot drive that flew across keeper Talbert Shumba and into the top corner.
Driven on by Keita, Guinea created several more good chances, the best of which saw Mamadou Diallo denied by Shumba’s sprawling save following a scramble in the box.
However, Zimbabwe held out to claim their first Nations Cup win since 2006, although they still finish bottom of Group B.
Mukansanga showed six yellow cards in total but, having previously refereed at the Tokyo Olympics last year, looked assured throughout her landmark outing in the Stade Ahmadou Ahidjo.
- 21ShumbaBooked at 56mins
- 16MahachiBooked at 85minsSubstituted forChimwemweat 88′minutes
- 17MusonaSubstituted forBhaseraat 45′minutesBooked at 90mins
- 3ZemuraSubstituted forKadewereat 75′minutes
- 19MuskweSubstituted forDubeat 75′minutes
- 7CisséBooked at 34mins
- 14Kourouma KouroumaSubstituted forSyllaat 63′minutes
- 19KanéBooked at 90mins
- 8KeïtaBooked at 90mins
- 3SyllaSubstituted forKonatéat 88′minutes
- 21KabaSubstituted forBayoat 63′minutes
- 9KantéSubstituted forDialloat 45′minutes
- Salima Mukansanga
Match ends, Zimbabwe 2, Guinea 1.
Second Half ends, Zimbabwe 2, Guinea 1.
Offside, Zimbabwe. Never Tigere tries a through ball, but Tinotenda Kadewere is caught offside.
Mamadou Kané (Guinea) is shown the yellow card for a bad foul.
Foul by Mamadou Kané (Guinea).
Tinotenda Kadewere (Zimbabwe) wins a free kick on the right wing.
Attempt missed. Never Tigere (Zimbabwe) right footed shot from outside the box is too high.
Naby Keïta (Guinea) is shown the yellow card.
Onismor Bhasera (Zimbabwe) is shown the yellow card.
Foul by Mohamed Bayo (Guinea).
Talbert Shumba (Zimbabwe) wins a free kick in the defensive half.
Corner, Guinea. Conceded by Godknows Murwira.
Substitution, Zimbabwe. Takudzwa Chimwemwe replaces Kudakwashe Mahachi.
Substitution, Guinea. Pa Konaté replaces Issiaga Sylla because of an injury.
Mamadou Kané (Guinea) wins a free kick in the defensive half.
Foul by Tinotenda Kadewere (Zimbabwe).
Attempt missed. Morlaye Sylla (Guinea) right footed shot from outside the box is too high. Assisted by Ibrahima Cissé.
Kudakwashe Mahachi (Zimbabwe) is shown the yellow card for a bad foul.
Mamadou Lamarana Diallo (Guinea) wins a free kick on the left wing.
Foul by Kudakwashe Mahachi (Zimbabwe).