Hall, 24, finished in 59 minutes 34 seconds, pipping Learmonth by a second.
"I turn 25 next week and I always said that if I can get a World Cup podium before that I'd be happy," said Hall.
Richard Murray won the men's race at the second-tier event, heading a South African top three in Cape Town.
The World Triathlon Series - the sport's premier event - begins on March 3, with live coverage and highlights across the BBC Sport website and the Red Button.
Great Britain's Lucy Hall won her first triathlon World Cup race in South Africa, beating compatriot and training partner Jessica Learmonth in a sprint finish.