Four-time winner Kipchoge was the favourite, but fell behind with two laps to go and finished eighth.
Ethiopian Kitata pushed ahead of Kenya’s Vincent Kipchumba on the home straight to finish in two hours five minutes and 41 seconds.
Brigid Kosgei, who holds the women’s world record, defended her title.
It was supposed to be a straightforward victory for defending champion Kipchoge, with Kenenisa Bekele pulling out injured on Friday.
But the 35-year-old Kenyan, who set a world record of 2:01.39 in 2018, never took the opportunity to pull away from an eight-strong leading pack in a slow start.
Kitata pushed the pace with 15 minutes to go and Kipchoge looked increasingly uncomfortable as he fell back.
Others dropped off too and eventually Kitata rounded the final corner into the home straight with compatriot Sisay Lemma and Kipchumba.
The 24-year-old managed to surge ahead and finish one second before Kipchumba, with Lemma three seconds further back.
Kosgei, 26, went clear of world champion Ruth Chepngetich after mile 18 and finished in 2:18.58, three minutes and three seconds ahead of American Sara Hall.
She was almost five minutes outside her world record set in Chicago last year.
“The weather was not good, so we struggled,” Kosgei, who earned $30,000 (£23,200) in prize money with her win, told BBC Sport. “I struggled up to the moment I finished.
“We have not prepared well due to the pandemic. I will be prepared for good results next year.”
The London Marathon, rescheduled from its traditional April date because of the coronavirus pandemic, is taking place for elite runners only over 19 laps around St James’s Park.
The wheelchair races take place later on Sunday.