The two teams attacked from the start and both goalkeepers were kept busy in the first half.
However, neither side could take their chances and the score was 0-0 at the interval.
A more entertaining second half followed as the Citizens opened the scoring through Kermit Erasmus after the Abafana Bes'thende's defence was exposed.
The former Orlando Pirates striker produced a well-timed header to make it 1-0 to City in the 52nd minute.
Arrows coach Steve Komphela introduced Sibusiso Sibeko, who made a good impact after he was fouled in the City box and the visitors were awarded a late penalty.
Fellow second-half substitute Knox Mutizwa stepped up and converted from the spot-kick in the 87th minute to ensure the match ended in a 1-1 stalemate.
The draw saw City slip down to 11th spot on the league standings, while Arrows climbed up to the fifth place on the table.
The two teams struggled to create clear-cut opportunities in the first half and the score was 0-0 during at the half-time break.
The Lions of the North came back rejuvenated following their half-time team talk with coach Owen Da Gama and they managed to break the deadlock.
Peter Shalulile was the man who hit the back of the net with a well-taken shot to make it 1-0 to Highlands Park in the 64th minute.
The momentum was with the visitors and they doubled their lead through Shalulile, who grabbed his fifth league goal of the season to make it 2-0 with 16 minutes left.
Bakgaga responded with a goal three minutes later when Collins Makgaka beat Highlands Park goalkeeper Thela Ngobeni with a good finish to make it 2-1.
However, the goal proved to be a consolation as Highlands Park held on to win 2-1 on the day.
The victory took Highlands Park to eighth place on the league standings, while Baroka slipped down to the ninth spot on the log.