Following a slow start, Arrows fluffed a big chance inside 32 minutes when Sibusiso Sibeko shot tamely at Patrick Tignyemb after beating the offside trap.
Unfortunately, that proved to be the only chance of the first half as both sides struggled to carve out chances, most notably the home side who failed to keep a hold of the ball.
The slow pace of the game continued in the second half, as an injury to Tebogo Potsane on 55 minutes forced Celtic to bring on Menzi Masuku.
Three minutes later, Arrows instituted their opening change in Knox Mutizwa for Sibeko, while Celtic made their second soon after as Ndumiso Mabena repalced Tshegofatso Mabasa.
After breaking down the left side, Lerato Lamola played a low cross to an unmarked Mutizwa for a calm finish past Tignyemb as Arrows went ahead on 69 minutes.
Siwelele opened up and after seeing Mabena’s long range shot spurned by Maximilian Mbaeva, Bongani Sam did the honours with an easy conversion in the final ten mnutes to level matters.
Abafana Besthende felt the pressure, and were let off the hook in the final minutes through a wayward finish from Victor Letsoalo following a through ball.
Momentum swung into added time when Mutizwa silenced the home crowd with a well-taken low free-kick to put Arrows in the last four.
Celtic: Tignyemb, Lingwati, Sam, Rikhotso, Baloyi, Potsane, Mabaso, Mashikinya, Dlamini, Tani, Kobedi.
Subs: Chaine, Letsoalo, Mabena, Masuku, Maema, Mahashe, Motshegwa.
Arrows: Mbaeva, Mzava, Bilankulu, Mathiane, Jooste, Phiri,Venter, Lunga, Ndwandwe , Mathenjwa, Sibeko.
Subs: Gumede, Matloga, Dube, Mutizwa, Dube, Sabelo, Lamola,.