The reigning 200m world champion clocked 22.37 seconds – just three thousandths of a second ahead of Switzerland’s Mujinga Kambundji.
It was her last race before next month’s World Championships in Eugene, where she will try to defend the title she won in Doha three years ago and improve on her 100m silver.
Asher-Smith was beaten to the British 100m title by Daryll Neita in Manchester on Saturday.
On Thursday in Sweden, Reece Prescod ran 10.15 seconds to finish second behind Akani Simbine in the 100m.
Keely Hodgkinson, who is expected to challenge the United States’ Athing Mu for gold in Eugene next month, was second in the 800m.
The 20-year-old ran one minute 58.18 seconds but was beaten by Kenya’s Mary Moraa.
“It was solid, everyone was trying to run in the same space. I gave it my all, she did better than me, but I’m sure we’ll race again at the World Champs,” Hodgkinson said.
“I came to Stockholm last year, it was a really good build-up to the Olympics, so why not do it again this year. I’ll get ready for Oregon and then it’s all go.”
Lorraine Ugen won the long jump by leaping 6.81m, with Jazmin Sawyers eighth.