Kenya’s Priscah Jeptoo claimed silver, five seconds behind, and Russia’s Tatyana Petrova came third for bronze.
Freya Murray, a late replacement for injured Paula Radcliffe, was the best placed Briton, 9:07 back in 44th place.
Team-mate Claire Hallissey was more than 12 minutes behind in 57th, while Mara Yamauchi quit just before 10km.
In winning, 24-year-old Gelana took seven seconds off the previous Olympic record and she had the faster finish as she crossed the line ahead of Jeptoo.
Petrova set a personal best of 2:23.29, while Kenya’s Mary Keitany – winner of the London marathon this year – had to settle for fourth after being dropped by the leading pack in the final stages.
“I’m not sure many people would have tipped Gelana,” said BBC commentator and former Olympic 1500m silver medallist Steve Cram.
“She wasn’t quite unknown, but to run in such a way was impressive. Gelana looked really relaxed until the last 200m-300m when she strained to reach the finish line.
“Once again, the Kenyans have had to play second fiddle to the Ethiopians, who were dancing with joy at the end.”
Yamauchi, 38, was sixth in the 20008 Beijing Olympic marathon but has since struggled with injury.
She said: “I had a heel bruise that I thought I was able to run on. I was confident I could give it a go, but on the second corner it started hurting.
“I did my best and it is not good to drop out in your home Games.
“I didn’t want my Olympic journey to end like this. I thought about withdrawing beforehand and had much higher hopes. Sadly it wasn’t to be.”