Monaco's returning coach Leonardo Jardim was denied a third straight French League Cup final as his side were defeated on penalties by Guingamp after a dramatic 2-2 draw.
Goals from Rony Lopes and Aleksandr Golovkin put 10-man Monaco 2-0 ahead in the first half, but second half strikes from Alexandre Mendy and Marcus Thuram drew the hosts level to force a penalty shootout.
William Vainqueur, making his first start for Monaco, was sent off after a high challenge on Thuram.
Sofiane Diop missed the seventh penalty for the visitors before 22-year-old winger Marcus Coco secured a place in the final of the French League Cup for the first time in Guingamp's history.
Phiri featured the full 90 minutes and scored the sixth penalty in the shoot-out as the struggling Ligue 1 side eventually triumphed 7-6 over the French giants.
Lebo Mothiba's Strasbourg face off against Bordeaux tonight in the other semi-final tie, which could see the South African duo meet in the final.