Vuyani Ntanga, Thabo Nthethe and Musa Nyatama scored for Bloemfontein Celtic, while Pirates goals came from Lennox Bacela and Andile Jali.
Ntanga started the scoring for Bloemfontein Celtic in the 38th minute, after the away team squandered several chances.
Lennox Bacela scored an equaliser in the 56th minute.
But substitute Lyle Lakay's cross set up a perfect scoring opportunity for Thabo Nthethe which he converted to give Celtic the lead again.
Celtic were awarded a penalty in the 88th minute when Mbongeni Gumede fouled Trevor Lamola in the box, Nyatama scored from the penalty spot to give Celtic a 3-1 lead.
Pirates were awarded a penalty in extra-time after substitute Collins Mbesuma was fouled Nthethe, Andile Jali scored the penalty but it was too late for the Buccaneers.
Scorers:
Bloefontein Celtic
Vuyani Ntanga,Thabo Nthethe, Musa Nyatama
Orlando Pirates
Lennox Bacela, Andile Jali
Teams:
Orlando Pirates: Senzo Meyiwa, Thabo Matlaba, Mbongeni Gumede, Lucky Lekgwathi, Ayanda Gcaba, Andile Jali, Thandani Ntshumayelo, Sifiso Myeni, Daine Klate, Kermit Erasmus, Lennox Bacela
Bloemfontein Celtic: Patrick Tingyemb, Tsietsi Mahoa, Thabo Nthethe, Clayton Daniels, Limbikani Mzava, Wandisile Letlabika John Arwuah, Vuyani Ntanga, Musa Nyatama, Gabadinho Mhango, Lerato Manzini