Haile Gebrselassie, Mo Farah, and Kenenisa Bekele, who have 12 world and seven Olympic titles between them, raced together for the first 19 kilometers before Bekele attacked on a steep portion to leave his two rivals behind.
Bekele, competing in his first competitive half marathon, made his move with under two kilometers to go but had to fend off a charge from Farah in the last 400 meters as the British runner failed to pip his rival on the line.
Bekele won the race by one second from Farah. Ethiopian great Haile Gebrselassie was third.
"I'm disappointed but I was second to a great athlete," said Farah. "I thought I could come back. It came to the last 200m, right to the line. It was a great race and a great finish."
Farah and Bekele are the only two men to have held the 5,000 and 10,000-meter titles from both the Olympics and the world championships at the same time. Farah won the long-distance double at the London Olympics and at the worlds in Moscow last month.
More than 50,000 people including retired footballer Robbie Savage and singer Mel C took part in the popular race first started in 1981 in wet and windy conditions.
Farah, Bekele and Gebrselassie, who have 12 world and seven Olympic titles between them, raced together for the first 19 kilometers before Bekele attacked on a steep portion to leave his two rivals behind.
The 40-year-old Gebrselassie was then dropped by Farah, who ultimately lacked the speed needed to catch and pass Bekele as the Ethiopian rider crossed the line with a smile on his face.
Kenya's Priscah Jeptoo won the women's race just four seconds short of the record time. Meseret Defar and Tirunesh Dibaba of Ethiopia were second and third, respectively.