Phunya Sele Sele traded blow for blow with the defending champions in the quarter-final, and many would argue they had the better of the scoring opportunities.
But it was not to be as Andile Jali converted the penalty that sealed Celtic's fate.
The first chance of the game came in the 10th minute when Celtic were awarded an indirect free-kick 12 yards out, after Moeneeb Josephs handled a back-pass from Oupa Manyisa.
Kurt Lentjies touched the ball on for Ruzaigh Gamildien to shoot, but his low drive was cleared off the goalline by the Pirates defence.
Pirates first chance came three minutes later when Benni McCarthy got onto the end of low cross from Ndumiso Mabena, but he fired wide from 12 yards out.
The best chance of the first half came in the final minute, and it took the brilliant acrobatics of Patrick Tignyemb to keep the scores level going into the break.
A Buccaneers counter-attack ended with Mabena volleying the ball goalwards from 22 yards out, but the Celtic keeper produced a great one-handed save to deny him.
The away team started the second half stronger, and came within inches of taking the lead in the 54th minute, when Joel Mogorosi shot narrowly wide from just inside the box.
Four minutes later substitute Lerato Manzini should have scored for Celtic, when he did well to get on the end of a cross, but he squandered his chance and headed the ball straight at Josephs, who made a good save.
The game died out a bit after that, but sprang back into life in the 80th minute when the referee harshly awarded a penalty after Lentjies slipped inside the Celtic box and handled the ball.
Jali made no mistake from the spot to give Pirates the lead and send them into the semi-finals.
Orlando: Josephs; Lekgwathi, Sangweni, Mahamutsa (Phungwayo 87), Gcaba, Myeni, Jali, Manyisa (Moholo 70), Klate, Mabena (Mbuyane 67), McCarthy
Celtic: Tignyemb; Leonard, Isaacs, Mothlaping, Mahoa, Mogorosi, Motshegwa (Manzini 58), Nthethe, Gamildien (Nontshinga 84), Bacela (Lakay 69), Lentjies