The first half was an untidy affair as neither side could carve out any clear chances to score, with the majority of the goal attempts being long-range shots that flew wide of the target.
Early in the second half Celtic had their clearest chance when Deon Hotto was released down the left and crossed, forcing an error from Ayanda Gcaba as he let the ball fall to Musa Nyatama in a scoring position, but Gcaba recovered to make the block just in time.
Three minutes later they were made to rue that missed chance as Abbubaker Mobara was released down the right flank by Issa Sarr and the Buccaneers went 1-0 up. Mobara slotted in sweetly from a tight angle following a searching pass from the centre circle.
Lyle Lakay had a chance to equalise immediately after the goal as he burst into the penalty area but a combination of challenges from the Pirates defenders and goalkeeper Siyabonga Mpontshane were enough to put him off.
Thamsanqa Gabuza could have sealed the result in the 81st minute when fellow substitute Thabo Rakhale – making his return following injury – crossed from the right flank to the striker unmarked six yards out, but his header lacked power and was easily saved by Patrick Tignyemb.
But there was to be late drama in the 87th miniute as Celtic substitute Kabelo Mahlasela picked up the ball on the edge of the area and sent a sweetly struck shot across Mpontshane to bring his side level.
Mpontshane had to be alert again in stoppage time to prevent Mahlasela from winning it for Celtic after he was played through by Nyatama, but the goalkeeper came out quickly to block the shot, forcing extra time.
Another substitute would also make his mark on the game in extra time. Gabuza, having missed a good chance with his head earlier in the match, accepted another chance set up by Rakhale in the 103rd minute, this time tucking home his header from close range to put Pirates in the lead again.