The home pair battled it out over the fourth round, with last year’s champion Oosthuizen starting the day at 15 under par and with a one-shot advantage over second-placed Marcus Armitage with Grace two further behind.
Despite carding a bogey five at the second, it was Grace who produced a rousing finish, cancelling out his earlier error with an eagle three at the fourth along with eight birdies inside the first 14 holes to ease himself to 21-under on a day when he putted just 22 times.
It was his ninth European Tour victory and his first since the 2017 Nedbank Golf Challenge.
Even a hole-in-one at the par three eighth could not keep Oosthuizen in touch as he finished with a round of 68 which included just a single birdie to trail the winner by three shots.
Englishman Armitage birdied the 18th to snatch third place with a round of 69 after bogey fives at the sixth and 16th holes.
He finished a shot ahead of compatriot Jack Senior and South African Jaco Ahlers, who tied for fourth on 15 under.
Grace’s efforts at the Randpark Golf Club secured him a place at this summer’s Open Championship at Royal St George’s along with fellow qualifiers Armitage and Ahlers.
Grace told www.europeantour.com: “That was remarkable. I played flawless golf and I can’t remember the last time the putter was that hot.
“This is the one I really wanted. This means so much to any South African, winning on home soil, the guys get so behind you and it’s such an emotional feeling.
“It’s the first win with the little one here so he’s going to have a photo with the trophy and then it’s a good birthday wish to my Mrs today, she’s a birthday girl today so it’s a good birthday present.”