Swallows dominated the first half, however Ajax had the first chance of the game in the third minute, when Swallows’ keeper Greg Etafia clashed with Sifiso Vilakazi just outside the box, but Clifford Ngobeni sent the resulting free-kick straight into the wall.
Swallows then went ahead in the eighth minute, against the run of play, when Tsutsulupa lobbed Ajax keeper Sean Roberts from a tight angle after Ajax failed to deal with a cross by Sandile Ndlovu on the right.
Ajax had another chance from a set-piece in the 20th minute, when Vilakazi headed over the bar from a Sameegh Doutie free-kick.
In the 30th minute Etafia was wrongly adjudged to have handled the ball outside the box, but justice prevailed as Franklin Cale slammed both his free-kick and the rebound straight into the wall.
Swallows went 2-0 up in the 36th minute. Ndlovu sprung the offside trap after a lovely reverse flick by Tsutsulupa.
The Birds could have made it 3-0 in the 41st minute, when Ajax’s defence were again caught napping. Ndlovu’s run beat the offside trap, but he chipped wide with only the keeper to beat.
And with Ajax on the back foot, Swallows had yet another chance just before half time, when Mark Haskins ran onto a well-weighted through ball from the on-form Tsutsulupa, but he arrowed his shot narrowly wide of the far post.
Ajax ran out the sharper side in the second half, and took the game to Swallows despite their two-goal deficit.
The Cape side were rewarded for their determination in the 49th minute. Doutie sent a corner straight to his captain Brett Evans, who volleyed the ball into the bottom left of goal.
Ajax managed to contain Tsutsulupa in the second half, while Swallows were content to slow the game down, resulting in more of a midfield battle with few real chances, although substitute Dipsey Selolwane had a shot from range go just wide of goal in the 80th minute.
Ajax were reduced to 10 men in the 83rd minute, when Nhlanhla Shabalala was sent off for a second bookable offence. Shabalala went into a tackle along with teammate Cale.
The referee initially yellow-carded Cale, who was also on his second yellow, but Cale pointed at Shabalala to indicate that he was the guilty party, and referee Mfiki changed his mind.
Ndlovu almost made it 3-1 to Swallows when he ran onto a cross in the 86th minute but, under pressure from the keeper, he stabbed his shot wide of goal.
In the 89th minute Ajax looked to have scored when Cale volleyed the ball at the Swallows’ post, but Etafia parried at the second attempt and the ball was adjudged not to have crossed the line.
Eduardo Ferreira did get Ajax on level terms in the first minute of injury time, with a powerful drive from the edge of the box.
Ajax had a free kick in the 94th minute, after a body-check by Afonso on Cale, but new Ajax signing Mabhuti Khenyeza ballooned the shot over goal, leaving the score at 2-2 at the end of regulation time.
Swallows went ahead again in extra time from a Ryan Botha corner in the 100th minute. Afonso rose to meet the ball at the far post, and headed towards goal, where the ball was met by Morgan Shivambu who got the final touch as he headed into the net.
Ajax were sent down to nine men in the 113th minute, when Nhlanhla Khubeka received a red card for obstruction on Phumlile Bengu in a goalscoring opportunity, and Botha sent the resulting kick just wide of goal.
In the 120th minute Swallows looked to have put the result beyond doubt at 4-2, when Botha knocked in an easy tap-in after a disastrous moment for Ajax’s defence, left thin from the sendings-off.
Khenyeza pulled a goal back for Ajax in the final minute of the game, but it was too little too late and Swallows took the match 4-3.