The 26-year-old Savinova, the fastest woman in the world this year, came through the field behind Semenya round the final bend and surged passed her rival to win in a world-leading time of one minute 55.87 seconds.
"I am quite surprised about my time and especially the power and endurance I found in my body in the last 100 metres," she told reporters.
"In the last 30 metres I already knew I was going to win so I started to smile and crossed the finish line with a smiling face."
Semenya, banned from running for much of the first year of her reign as world champion while an IAAF investigation into her gender was conducted, claimed silver in 1.56.35, her best time of the year.
"I'm very happy, to win the silver medal was quite a present for me, I'm really surprised," said Semenya.
"I really enjoyed it, better than two years ago. I know I won gold in Berlin but I am feeling much better today."
The bronze went to Kenya's 2007 champion Janeth Jepkosgei, the Olympic silver medallist, who ran 1.57.42 to edge out American pace-setter Alysia Johnson Montano.
Semenya missed the recent world student games with a back injury and her camp was moved to issue a statement before Daegu denying South African media reports that she was overweight and had fallen out with her coach.
The 20-year-old rallied in Daegu, however, running an impressive time in the heats on Friday that convinced her Russian rival she was back close to her best.
"When I saw Caster's great shape before the race, I told myself that she was well-prepared and was unbeatable to me," said Savinova.
"That is why I prepared to fight for silver and did not focus on gold. I am still shocked I managed to win."
Semenya ran the first lap in fifth place with Savinova tucked in behind her and made her move after the bell, easing into the lead and holding it comfortably until Savinova kicked on the final bend.
The slight European champion drew level with Semenya and then sprinted past her to claim her first major championship title.