The rain-drenched match ended 1-1 after 120 minutes, with Thabo Matlaba’s 85th-minute screamer having cancelled out Robert Ng’ambi’s header early in the second half.
The game started in bizarre circumstances when Andile Jali took to the field, despite the final team-sheets having him on the bench with Lehlogonolo Maselesa instead starting.
The first chance of the night fell to Dikwena in the fourth minute when Siphelele Mthembu gathered the ball on the edge of the area from a poor headed clearance, beat two defenders and ran at Senzo Meyiwa, but Rooi Mahamutsa stepped in with a timely block.
Both sides were struggling to string passes together in the dire conditions, with Pirates forced into long-range efforts from Kermit Erasmus, who looked the most lively in the early exchanges.
First he hit a shot straight at Siyabonga Mpontshane which the keeper gathered at the second attempt, before the striker beat two defenders inside the box, only to fire narrowly over from 15 yards out.
The Buccaneers suffered a setback just before the break when second semifinal Man of the Match Patrick Phungwayo limped of injured and was replaced by Matlaba.
Pirates had two more chances before halftime: First Oupa Manyisa hit a half-volley from outside the box straight at Mpontshane, while Mahamutsa had a free header from Tlou Segolela’s corner-kick which he completely mis-timed.
The second half had barely got underway when Stars took the lead. Tintswalo Tshabalala whipped in a free-kick from the right which was flicked on by Mhlongo and headed home from two yards out by Ng’ambi.
Bucs almost hit back straight away though as Matlaba beat a defender before curling in an inviting cross which the diving Happy Jele failed to direct on target.
Shortly afterwards Bacela’s cushioned header looked to have played in Erasmus, but rather than hitting it first time he hesitated and the moment was lost.
It was all Pirates now as Stars opted to sit back and defend the lead, with the excellent Tshepo Gumede at the heart of the defensive effort. And he needed to be at his best on 65 minutes to prevent Jali’s clever chip from reaching Segolela in the box.
There was a massive moment soon afterwards when Segolela played in Erasmus who expertly finished, but the effort was ruled offside. However, replays suggested the striker was marginally behind the last defender.
Stars’ front men were virtual spectators by this stage as Bucs continued to pile on the pressure; pressure which finally paid off five minutes before the final whistle courtesy of Matlaba, who received the ball 25 yards from goal and smashed a thunderous shot which left Mpontshane rooted to the spot.
Bucs continued to push for the winner, but instead the match went into extra-time, where they had the first chance when Manyisa played in Bacela following a quick counter-attack, but the striker’s shot was straight at the keeper.
Pirates should have had the lead on 102 minutes. Again Matlaba produced the magic down the left and played in the perfect ball, but somehow substitute Joseph Molangoane contrived to miss from three yards out.
Matlaba had a chance to add another thunderbolt to his collection with eight minutes remaining, but this time he hit his shot straight at the goalie.
Mogakolodi Ngele had a rare chance for Stars when he burst through right near the end, but his shot lacked conviction to send the match to penalties.
Pirates' composure completely deserted them in the shootout, with Mahamutsa, Ndumiso Mabena and Bacela all missing to hand Dikwena the trophy.
Penalty sequence: Mere scores, Jali scores; Botes scores, Mahamutsa misses; Ngele scores, Mabena misses; Chinyama saved, Bacela misses