The Buccaneers got off to an explosive start, with Kermit Erasmus involved in two incidents in the opening 10 minutes, first hitting the upright and then being denied a penalty call after being brought down by Lehlohonolo Nonyane in the area.
Aces, however, took the advantage when Collins Mbesuma put them in front with a clinical header in the 12th minute after a set piece.
Both sides were unable to create much flair for the remainder of the first half, but the contest exploded back to life in the second period.
Three minutes after the break, Erasmus outsmarted five Aces defenders, though his left-footed strike was denied by goalkeeper Jackson Mabokgwane.
Doctor Mampuru then created a chance for Aces with a fine cross from the right, which was collected by Dennis Masina but ultimately cleared by a charging Daine Klate.
On the hour mark, Oupa Manyisa came close for Pirates, but he slammed a thunderous attempt over the crossbar, and with Bucs becoming desperate, substitute Thabo Qalinge took a long-range strike that was well saved by Mabokgwane.
The visitors eventually found the equaliser in the 68th minute, after Mabokgwane was found to have brought down Erasmus unfairly in the area, and Lehlohonolo Majoro hit the back of the net from the penalty spot.
But the hosts hit back with 11 minutes left when Manyisa handled the ball in the area and Mabhuti Khenyeza made no mistake from the resultant penalty to bag the winner.
Aces climbed from ninth place in the league standings to second position, though they remained nine points behind runaway leaders Kaizer Chiefs, who held a game in hand.
Pirates dropped to third place, with a host of teams looking to knock them further down the table when the majority of the midweek fixtures are played on Wednesday night.
Would you like to place a soccer bet? Click here to get started in 3 easy steps.