Ten-man Cape Town City clinched fourth place in the DStv Premiership after they beat Kaizer Chiefs 1-0 at the FNB Stadium to leapfrog them in the table on the final day of the season.
Eric Tinkler's side got off to a flying start when Mduduzi Mdantsane gave them a ninth-minute lead, although the dismissal of Taariq Fielies on 34 minutes threatened to ruin their afternoon in Nasrec.
But the Glamour Boys were unable to make the extra man count in the remaining 56 minutes as they slumped to a third successive loss, which saw them come in a point behind the Citizens in fifth spot.
Amakhosi were looking to finish the season on a positive note after back-to-back defeats against Swallows and SuperSport United ended their hopes of qualifying for the CAF Confederation Cup.
Meanwhile, City hoped to complete the league double over Amakhosi, having beaten them 2-0 in the reverse fixture at the DHL Stadium on August 23 to make it three wins in a row in their head-to-head meetings.
The visitors made a bright start and Khanyisa Mayo, who was chasing the Golden Boot, threatened to open the scoring in the seventh minute when he met a cross from Darwin Gonzalez with his head but Itumeleng Khune pulled off a good save.
However, the deadlock was broken just two minutes later as Mdantsane arrived inside the box to tuck his shot into the bottom left corner of the net after being picked out by Fielies.
Mdantsane nearly struck again on 11 minutes with a header that flew inches past the right post from another Gonzelez cross and the hosts looked to respond as Yusuf Maart tested Darren Keet from range on 13 minutes after being fed by Ashley Du Preez.
After Thabo Nodada drew a comfortable save out of Khune with an effort from inside the box on the left, Christian Saile and Du Preez failed to hit the target with their respective attempts from range at the other end midway through the first half before Njabulo Ngcobo fired high and wide from a corner in the 27th minute.
Arthur Zwane's team were given hope seven minutes later though, when Fielies received a straight red card for a poor challenge on Du Preez, who soldiered on initially before being replaced by Khama Billiat on 44 minutes.
Chiefs came out of the blocks flying in the second half, with Maart blazing a shot over the crossbar from distance in the 48th minute, while Siyethemba Sithebe steered a header fractionally wide of the left post from a 50th-minute corner.
But they were nearly caught out on the counter three minutes later when Gonzalez raced away on the left and lashed his shot into the side-netting after being played in by Nodada.
Saile then squandered a glorious opportunity to restore parity moments later as he missed the target with a header from a corner before Ngcobo also proved wasteful with a strike from range that sailed high and wide of the goal in the 68th minute.
Time was running out for the Glamour Boys and they survived two scares in quick succession when Jaedin Rhodes lined up a shot from range that drifted narrowly past the right post on 77 minutes, with Khune required to keep out Taahir Goedeman's attempt from inside the box moments later.
Khune was called into action again on 81 minutes to deny Bertrand Mani from a tight angle on the right, while Saile wasted another chance to level matters four minutes from time when he skewed a shot to the left of the target from inside the area.
The Citizens put everyone behind the ball in the final few minutes to see out the danger and hold on for a third win in four games.
Kaizer Chiefs 0
Cape Town City (1) 1 (Mdantsane 9')
Kaizer Chiefs: I. Khune, R. Frosler, S. Ngezana, N. Ngcobo, S. Hlanti (H. Mashiane 53'), S. Sithebe, Y. Maart, A. Du Preez (K. Billiat 44', M. Shabalala 46'), S. Zwane, D. Solomons, C. Saile.
Cape Town City: D. Keet, K. Cupido, T. Mokeke, T. Fielies, M. van Heerden, R. Mokhuoane (T. Goedeman 78'), M. Mdantsane (T. Mkhize 40'), T. Nodada (L. Slatsha 78'), D. Gonzalez (B. Mani 59'), J. Rhodes (L. Lakay 77'), K. Mayo.