Katlego Mashego got a goal in each half, while Lerato Chabangu hit home with a free-kick at the death.
Swallows had their first real attempt at goal when winger Dikgang Mabalane volleyed the ball just wide after it had fallen to him on the edge of the box in the 26th minute.
Four minutes later Chabangu was one-on-one with Kennedy Mweene, but the former Brazilians captain shot straight at the goalkeeper. It was a weak attempt as he had time to place the ball.
The home side had an opportunity at the other end seconds later. Khama Billiat skilfully beat his marker and eliminated a few defenders before setting up Cuthbert Malajila, who toe-poked the ball into the side netting with his left foot.
The game began to open up in the latter stages of the first half and the Brazilians punished Swallows for their erratic defending.
Etafia sent a lame pass to his defender and has dispossessed by Billiat, who unselfishly passed to an unmarked Mashego to tap home into an empty net.
Mashego doubled his tally in the 60th minute when Swallows failed to clear the ball from a corner-kick. Rashid Sumalia’s header came off the crossbar and Mashego reacted the quickest to head home from close range.
Former Sundowns man Luvhengo Mungomeni was given his marching orders by referee Lwandile Mfiki in the 74th minute after a second yellow card offence.
Two minutes before time, Chabangu reduced the deficit, when he curled in a free kick from 20 yards to beat Mweene.