American great Michael Phelps broke his gold medal drought in Shanghai with a convincing 200m butterfly win on Wednesday, claiming his third straight world title in his favourite event.
The Olympic champion and world record-holder stormed ahead over the early stages and had enough left in the tank to fight off a late challenge by Japan's Takeshi Matsuda, clocking a winning time of 1min 53.34sec.
Matsuda timed 1:54.01 while China's Wu Peng claimed bronze in 1:54.67.
Phelps smiled and shook Wu's hand after his victory, which follows a disappointing third place as part of America's 4x100m freestyle team and silver in the 200m freestyle as his rocky season continued in Shanghai.
"The race felt good. I wanted to do what I usually do when I'm in better shape," Phelps said.
"I wanted to step on it from the get-go. I saw the other swimmers at the 150 and I put my hips into it. I know there's a lot more I can do in that race. I'm feeling back to where I want to be. It feels good."
Phelps arrived in China, scene of his record-breaking eight-title haul at the Beijing Olympics, on the back of a string of defeats, and admitted he had neglected training and spent too much time playing golf.
His slump reached a nadir in May, when Wu beat him in the 200m butterfly for the second time in two months - ending a nine-year unbeaten streak Phelps had hoped to preserve until retirement.
On a busy night for the American, Phelps also qualified second behind Ryan Lochte for Thursday's 200m individual medley final, where he will try to avenge defeat to his team-mate in the 200m freestyle.
Also on Wednesday, Italy's Federica Pellegrini claimed her second successive world freestyle double when she surged from fifth at halfway to win the 200m in 1:55.58 from Australia's Kylie Palmer and Camille Muffat of France.
Olympic champion Pellegrini, who successively defended her world 400m crown on Sunday, appeared in trouble at 100m but she closed emphatically to win it by nearly half-a-second.
Meanwhile China's Sun Yang won the men's 800m freestyle title ahead of Canada's Ryan Cochrane with Gergo Kis of Hungary third, delighting a packed Sea Crown stadium which has now witnessed three gold medals for the hosts.
Sun, 19, who led throughout, was never seriously troubled despite Cochrane's best efforts and won by a healthy margin of 3.29sec, setting him up for an expected assault on Grant Hackett's 10-year-old 1500m record on Sunday.
Brazil's Felipe Franca da Silva won the 50m breaststroke, ahead of Italian Fabio Scozzoli and defending champion Cameron van der Burgh of South Africa, in a time of 27.01sec.
And Australia's "Port Maquarie Missile" James Magnussen swam 47.90sec to top the 100m freestyle semi-final timings, reinforcing his status as favourite for Thursday's decider.
The 20-year-old Magnussen, who destroyed Phelps on the way to Australia's famous 4x100m victory on the opening night, was followed by America's Nathan Adrian with reigning champion Cesar Cielo fifth.
"I'm very happy that I am a little bit fast again. It's good. The biggest thing is to be patient - it's practice for the Olympic Games," Magnussen said.