The goals came via a Thandani Ntshumayelo brace, a Lennox Bacela penalty and a late Sifiso Myeni effort.
Tornado FC had Mapogo Mphakane sent off, but only six minutes after his second yellow as referee Shane Chuma blundered badly.
The Buccaneers took the lead early on through Bacela, who scored from the penalty spot after he was fouled by the self-same Mphakane.
Pirates were dominating possession, but found chances hard to come by until the 24th minute, when Ntshumayelo found the back of the net from close range from Mpho Makola's cut-back.
Bacela then headed Happy Jele's cross straight at the goalkeeper Majola from close range, before the goalie pulled off a brilliant one-handed save to keep out Makola's long-range drive.
Bucs came out firing in the second half and, after Mphakane's delayed red card, they really turned on the heat.
Jele missed a header from close-range before Issa Sarr's deflected effort sailed inches past the upright.
Tornado goalie Majola then produced a magic save to tip Makola's long-range shot onto the crossbar, but the goal did come on 73 minutes - Ntshumayelo cutting in from the left before beating the keeper at the near-post.
Substitute Menzi Masuku then missed from straight in front following an indirect free-kick and Sifiso Myeni hit the crossbar from Sarr's cut-back.
However, Myeni did get his goal on 87 minutes, albeit it in fortunate circumstances - Rakhale's cross hitting the winger in the midriff and bouncing in.
Pirates XI: Mhlongo, Jele, Gumede, Mahamutsa, Matlaba (Gcaba 50), Sarr, Ntshumayelo, Makola (Masuku 77), Myeni, Bacela, Erasmus (Rakhale 64)
Tornado XI: Maphakane, Ndogeni (Masenya 72), Majola, Moni, Chauke, Maboea (Mlambo 82), Pietersen (Sinqa 33), Siluma, Yakho, Mafanya, Ngwetjana