From their 1-0 defeat to AmaZulu, the Cape Town outfit made two changes in Surprise Ralani and Roland Putsche with Highlands doing likewise in Sphiwe Mahlangu and Sello Motsepe.
City wasted no time to get on the front foot when Thabo Nodada’s intelligent run opened up an opportunity for Putsche, who dragged the effort wide on nine minutes, while Highlands were denied an early opener when Peter Shalulile’s header cracked against the crossbar.
The Citizens were forced to make a change after just 15 minutes, as Putsche was unable to continue through injury and was replaced by Teko Modise.
The crossbar denied the visitors once again in the final 10 minutes of the half, as Mahlangu leaped high and sent his header crashing against the crossbar.
The deadlock was broken after a period of incisiveness on either side, with Thamsanqa Mkhize firing home from the rebound after Kermit Erasmus' effort was palmed away by Marlon Heugh on 60 minutes.
Eleven minutes later, the lead was doubled when Craig Martin made the most of a poor clearance, bringing it down with one touch before unleashing a brilliant, dipping volley into the far-left corner from the right edge of the area.
The floodgates were opening as Heugh miscontrolled a back pass from Luckyboy Mokoena to see the ball roll over the goal-line minutes later for the own goal.
Highlands managed to threaten a few times despite their downward spiral, but City proved too strong in the end.
City: Leeuwenburgh, Mkhize, Cupido, Seedat, Kwanda,Nodada, Martin, Putsche, Mokeke, Erasmus, Ralani.
Subs: Motloung, Modise, Fielies, Links, Abrahams, Mthembu, Edmilson.
Highlands: Heugh, Rae, Msimango, Mokoena, Motsepe, Mofokeng, Mbatha, Haoseb, Mogaila, Shalulile, Mahlangu.
Subs: Peters, Fransman, Versuur, Williams, Morlafi, Allie, Nyembe.