Celtic made wholesale changes, with only goalkeeper Sipho Chaine, Wandisile Letlabika, Siphelele Luthuli and Neo Maema remaining while Maritzburg recalled Judas Moseamedi in place of Bongokuhle Hlongwane.
Siwelele had a dream start as Victor Letsoalo gave them the lead in just the eighth minute with a strike from the centre of the box after a pass from Thato Lingwati.
John Maduka was forced into a substitution in the 14th minute as Chaine sustained an injury and he was replaced by Jackson Mabokgwane.
United eventually levelled matters nine minutes before the break courtesy of Tebogo Tlolane with a strike in the centre of the box after he was setup by Moseamedi and the sides went to the break level pegging.
Lucky Baloyi restored the lead for Celtic a minute from the break with a strike from the centre of the box after he was assisted by Maema.
Things got worse for Eric Tinkler's men ten minutes inside the second stanza as they were reduced to ten men after Kwandakwensizwa Mngonyama got a red for violent conduct.
Victor Letsoalo sealed the game for Siwelele in the last ten minutes, making it 3-1 and grabbed his brace with another shot inside the box against the run of play.
Celtic held on to victory in the end and squeezed into the top eight thanks to a superior goal difference over Highlands Park, who drew 1-1 against AmaZulu to finish ninth while Maritzburg ended in seventh place.
Celtic: Chaine; Lingwati, Letlabika, Mereko; Baloyi, Luthuli, Mofokeng, Matjila; Maema, Letsoalo; Sera.
Subs: Mabokgwane, Mogakwe, Nyamende, Mashikinya, De Jongh, Mangweni, Masuku, Maloisane, Ndou.
Maritzburg: Ofori; Sanoka, De Reuck, Allie; Mngonyama, Timm, Bongo Mbourou, Claasen, Tlolane; Moseamedi, Kutumela.
Subs: Mpandle, Barr, Buchanan, Shandu, Augusto, Bhengu, Hlongwane.