Jayiya struck in the 21st minute, firing Eric Tinkler’s side into a lead they never relinquished.
City got off to the brighter start at the Cape Town Stadium, Aubrey Ngoma missed the target with an opportunity in the 3rd minute.
In the 9th minute, Ajax’s Bantu Mzwakali fired in a shot that was spilled by City ‘keeper Shuaib Walters, but he gathered at the second attempt.
It was Eric Tinkler’s City who went in front in the 21st minute as a cross was flicked on by Judas Moseamedi and Jayiya arrived at the back post to beat Brandon Peterson in the Ajax goal.
Moseamedi nearly grabbed a second for City in the 26th minute, as he rifled in a shot that flew just over Peterson’s crossbar.
Toriq Losper then had the ball in the back of the net for Ajax, but the goal was correctly ruled out for a foul on Vincent Kobola in the build-up.
Given Mashikinya was next to threaten for City in the 37th minute, his effort curling just wide of goal from the edge of the area.
It was end-to-end stuff and Erwin Isaac’s cross for Ajax just failed to find the onrushing Thabo Mosadi.
Ngoma then won possession inside his own half and ran the length of the field, only for Peterson to save his shot.
In first half stoppage time, Nathan Paulse had a great chance for Ajax, but he couldn’t make a proper connection with his shot.
City started the second half brighter, and Moseamedi had another run at the Ajax goal, but his shot was blocked by Rivaldo Coetzee.
Ajax made a change, bringing on Mark Mayambela for Losper, while City then brought on Roland Putsche for Mashikinya.
In the 59th minute, Mzwakali burst through on goal, but was denied by a superb challenge from City centre back Tshepo Gumede.
City came desperately close to doubling their lead as Kobola got free down the right, and his cross was headed against the inside of the post by Ngoma, but bounced out.
In the 64th minute, Mosa Lebusa was forced off with an injury for Ajax, and replaced by striker Joaquim Lupeta.
City had another opportunity a minute later as Ngoma’s cross found Moseamedi, but he couldn’t direct his header on target.
Ajax might have drawn level in the 80th minute as Paulse rose highest to meet a free kick, but put his effort wide.
Four minutes later, substitue Erick Chipeta should have scored for the Urban Warriors, but headed wide from a corner, with the goal gaping.
Ajax kept coming and Paulse’s shot was blocked for a corner in the 87th minute before Ajax defender Lawrence Lartey headed over the resultant corner.
City should have had a penalty in the 88th minute, but amazingly the referee did not point to the spot after Jayiya was hacked down by Abel Mabaso.
And City nearly paid the price as Pustche headed a Mayambela free kick just over his own bar in the 90th minute.