Kipchoge braved wet conditions Sunday to cross the finish line at Berlin's Brandenburg Gate in 2 hours, 3 minutes, 32 seconds, missing out on the world record by 35 seconds.
The long-distance champion from Kenya fought off a surprise challenge from 26-year-old Ethiopian debutant Guye Adola, who finished 14 seconds later in second place.
"The conditions weren't ideal. It rained. Luckily there wasn't too much wind. In the end I'm just happy to have won against Adola," Kipchoge, 32, who also won the race in 2015, told reporters.
"I didn't expect Adolo but I am happy for him. This is sport."
Gladys Cherono followed up her 2015 victory by winning the women's race in 2:20:23, ahead of Ethiopia's Ruti Aga and fellow Kenyan Valary Ayabei.
The last six men's marathon world records have been set on Berlin's flat, inner city course. Kenyan Dennis Kimetto's time of 2:02:57, clocked in 2014, is still the fastest.
Former men's record holder Wilson Kipsang, last year's winner Kenenisa Bekele and Kipchoge, had made their intentions to beat the record clear with their rapid early pace. But the unrelenting drizzle ultimately took its toll. Kipsang and Bekele struggled to keep up and eventually dropped out of the race, leaving Kipchoge to battle it out alone with Adola.
The triumph means Kipchoge has now won eight of his last nine marathons dating back to 2013.
The Berlin race took place on the same day as the German federal election, with closed roads and extra security posing minor problems to city voters trying to reach polling stations.
nm/se (AP, Reuters, dpa)