The game ended 2-1, after goals from Nathan Paulse for Ajax, and Sandile Ndlovu and Evans Gwekwerere for Swallows.
Ajax opened the scoring in the 30th minute, when Nathan Paulse rose to head home an Eyong Enoh cross.
But they held the lead for less than a minute, as Swallows equalised through Sandile Ndlovu. Ajax failed to clear a cross, and in the ensuing chaos Ndlovu was gifted a simple tap-in to make it 1-1.
Ajax took control of the game for the remainder of the second half, but although they enjoyed more territorial possession they couldn’t manage to translate that into goals.
Gwekwerere made it 2-1 to Swallows in the 72nd minute, scoring the winner with a header after a cross from Cecil Oerson.
Swallows had Patrick Mabedi sent off fifteen minutes from time for violent conduct. Ajax searched for an equaliser, and attempted to put their superior numbers to good use, but Swallows hung back in numbers to defend, and the Cape Town side couldn’t break through.
The loss leaves Ajax in second position, four points behind log leaders Supersport United, although the Urban Warriors have a game in hand. Swallows lie in seventh position, equal on points with Orlando Pirates.