
Steenbergen held off a late charge from O’Callaghan to touch the wall in 52.55s, forcing her Australian rival to settle for second in 52.67s.
American Torri Huske, who withdrew from a race earlier in the week after suffering from a stomach bug, was third in 52.89s.
Steenbergen won World Championship gold in the event in Doha last year in a field missing several big names saving themselves for the Paris Olympics.
“In Doha I was like, this is crazy to win, but in this field I don’t know what to feel, I’m just so happy,” said the 25-year-old.
Steenbergen also won bronze with the Dutch team in the women’s 4x100m freestyle relay this week in Singapore.
“After the relay I knew I was in good shape but I was getting more nervous through the week and tonight I was feeling it a bit,” she said.
“I just tried to keep my calm.”
Steenbergen’s win denied O’Callaghan her fourth gold medal of the week and her 12th World Championship career title.
A win would have seen her eclipse retired great Ian Thorpe as Australia’s most decorated World Championship swimmer.
“As I’ve said a thousand times, I’ve not had the best prep towards this,” said O’Callaghan, who won the 200m freestyle title two nights earlier.
“To do what I did tonight, last night and the nights before that, I am very proud.”
Huske picked up her second medal of the week after winning silver with the US women’s 4x100m freestyle relay team.
“I’ve never had such a roller coaster of a meet,” she said.
“I am really proud of that swim and that was I able to get back to kind of normal.”
The overwhelming majority of the US team has been battling acute gastroenteritis.