Eliud Kipchoge broke the London Marathon course record as he won the title for the second year running, with fellow Kenyan Jemima Sumgong triumphing in the women's race.
Kipchoge crossed the line in two hours, three minutes and five seconds to finish clear of compatriot Stanley Biwott and came agonisingly close to beating the world record set by Dennis Kimetto (2:02.57) in September 2014.
It marked Kipchoge's sixth win in his last seven marathons and underlined his status as the leading contender for gold at the Rio Olympics.
The favourable conditions paved the way for a quick race and so it proved, Kipchoge reaching the halfway point in a record time of just over 61 minutes.
He had Biwott for company for much of the race, but kicked for home in the final few miles and showed a mixture of joy and frustration after realising he had come so close to Kimetto's leading time.
Kenenisa Bekele was third.
The race had an extra edge as a number of athletes secured Rio qualifying berths and the women's event even involved a fall for eventual winner Sumgong.
She took a tumble and hit her head approaching a drinks station near the end, but picked herself up to finish in 2:22.58 and leave 2015 winner Tigist Tufa in second, while Florence Kiplagat rounded off the podium.
Sumgong's performance underlined a huge improvement from last year, when she had to settle for sixth.