Cronje, the World Championships bronze medallist, broke the national 1 500m record for the second time this year, taking second place in 3:31.93 to improve his own SA mark by 1.53 seconds.
Running a well-judged race, he went out hard as the leaders set a blistering pace, and had enough left in the tank to produce a sprint finish as he edged Moroccan Mohamed Moustaoui on the line.
Silas Kiplagat of Kenya was never really challenged as he led from gun to tape to win easily in 3:30.13.
Semenya showed she was approaching her best form for the first time this season, in her last race of the year, after returning from a lengthy injury layoff.
Pacing herself well throughout the race, she won the women’s 800m event in 1:58.93, charging clear of Kenyan Nelly Jepkosgei to secure victory by more than half a second as she broke the two-minute barrier for the first time this season.