Goals from Ezenwa Otorogu and Tlou Segolela saw the Buccaneers pick up a third successive League win and close to within six points of leaders Mamelodi Sundowns.
The Birds, in contrast, are still without a win from 11 League matches and have now suffered their first defeat under the tenure of new coach Gordon Igesund.
Both teams struggled to create scoring chances in the first half. Teko Modise, back in the Pirates line-up in place of the suspended Daine Klate, was perhaps the liveliest player on the pitch and grew into the game after a somewhat erratic start.
On 29 minutes Ezenwa Otorogu had an opening in the Swallows penalty area but he was unable to get an effort away under pressure from Roger Da Costa and Greg Etafia.
Just under ten minutes later Modise almost got through the defence after an impish chip into space from Andile Jali, but the midfielder was unable to get a shot away.
But on 40 minutes the breakthrough finally came for the visitors. A poor back-header from Roger Da Costa fell invitingly for Otorogu and the Nigerian steered home a well-placed left-footed shot to put Bucs 1-0 up.
There was further drama at the end of the first half as Vincent Kobola brought down Happy Jele in the box and gave away a penalty. Lucky Lekgwathi took on the responsibility but blasted his spot kick over the bar.
Swallows came out with renewed vigour in the second half but they missed out on a great scoring opportunity in the 53rd minute. Young striker S’celo Zuma went one-on-one with goalkeeper Moeneeb Josephs but ‘Slimkat’ made a great save.
Ten minutes later a terrific Siyabonga Nomvete strike had the beating of the ‘keeper but rebounded off the underside of the crossbar.
On 67 minutes Pirates killed off the game. Modise picked out Segolela with a superb pass and the winger showed great composure to control the ball and fire a low shot to Etafia’s right that put the Buccaneers 2-0 up.
There were further chances at both ends in the remaining minutes, particularly for Pirates, for whom the unfortunate Ndumiso Mabena missed a virtual open goal.