The 34-year-old surpassed Mexican Arturo Barrios's previous mark of 21.101 km, set in La Fleche, France, on March 30, 1991.
"At around the halfway point I felt I could get the record," a smiling Gebrselassie told reporters by the finish line. "I felt comfortable the whole way."
On the way to the new mark, Gebrselassie also broke the 20-km world record time of 56 mins 55.60 secs, set by Barrios during his run in 1991. The Ethiopian clocked 56:25.98.
Gebrselassie, the best distance runner of his era, retired from track running to concentrate on the marathon after the 2004 Athens Olympics.
In preparation for Wednesday's record attempt he made a surprise return to the track in the Dutch town of Hengelo last month, clocking 26 minutes 52.91 seconds in a 10,000m race.