James Milner scored for City to cancel out an early opener, but Abdul Razak gave away a late penalty that allowed the hosts to celebrate Nelson Mandela's 95th birthday with a victory.
Having been beaten 2-0 by Supersport United in Manuel Pellegrini's first friendly match in charge on Sunday, City were without their new boss after he had to fly back to Chile for family reasons.
City looked sharper in the earlier stages than they had at the weekend but it was a mistake by Aleksandar Kolarov that gifted AmaZulu the lead after 20 minutes.
The Serbian left-back made a mess of his back-pass to Joe Hart from near the halfway line and Bongani Ndulula seized the chance to round the goalkeeper and break the deadlock.
City drew level within six minutes, though, as Yaya Toure's off-target header from a Scott Sinclair cross fell kindly for Milner to score from the corner of the six-yard box.
The English side created several chances to go ahead but were wasteful in front of goal and eventually paid the price as Razak fouled in the area and Carlington Nyadombo stepped up to score from the penalty spot in the 89th minute.
City next head for Hong Kong over the weekend ahead of the Barclays Premier League Asia trophy, and a clash with South China on Wednesday