Marcel Kittel's first Tour de France stage win in two years came by the narrowest of margins on a day when Mark Cavendish found himself completely squeezed out in Limoges.
This was the ninth Tour stage win of Kittel's career, and the first for the Etixx-QuickStep sprinter since Paris in 2014, but it was only confirmed after officials checked the photo as he beat Bryan Coquard of Direct Energie by just a few millimetres.
That was after 237.5km of racing.
Tinkoff's Peter Sagan came home in third to retain the yellow jersey, but there was disappointment for Cavendish as he became separated from his team-mates and found himself boxed out before coming over the line in eighth.
Ireland's Dan Martin has slipped to 13th overall, 18 seconds behind the race leader.
Kittel wore yellow with opening stage victories in 2013 and 2014, but was forced to miss the 2015 Tour in a season wrecked by illness.
Though he had to wait for confirmation of his win here, once it came so did tears.
"I don't believe you explain emotions, they just come out," the 28-year-old German said. "The victory means a lot. I know how hard I worked to get back after being sick so many times last year and missing out on the Tour. It was a very difficult moment in my career."
Cavendish won two of the first three stages this year to wear yellow for the first time in his career and move level with Bernard Hinault, second all-time with 28 Tour stage wins, but there was frustration here as his route to the line was blocked.
A roundabout 3.7 kilometres from the finish of this 237.5km run from Saumur - the longest stage of this year's Tour - caused a tight squeeze in the peloton, and although nobody went down, Cavendish was caught out all the same.
"Mark felt really good today but they lost each other on that one roundabout," Team Dimension Data principal Doug Ryder told Press Association Sport. "You could see Mark was super strong at the end, just floating on the wheels of others, but he couldn't get through.
"I'm so sorry for him but that's sprinting. He's been fortunate the last few days but that was tough for him today."
Sagan's third place means the world champion has moved back ahead of Cavendish in the battle for the points leaders' green jersey - a prize Sagan has won four years on the trot.
"I'm very happy," the Slovakian said. "I lead the points classification and I still have the yellow jersey - this Tour is going very well for me. Today's finish was good for me but I started sprinting too early.
"Kittel was stronger and Coquard was very, very smart. He waited for the last moment and he was so close to winning."
Britain's Dan McLay (Fortuneo-Vital Concept) was seventh on the stage, his third top-10 finish in the opening four stages of his first Tour de France.
Chris Froome finished 37th on the day, and after bonus seconds were applied he sits in fifth place overall, 18 seconds off Sagan in yellow before the first notable uphill tests of this Tour come on Wednesday.
Wednesday's stage five, covering 216km from Limoges to Le Lioran, takes the race into the Massif Central, with a total of six categorised climbs, including three category threes and two category twos.
"I think it's a bit too early for the real general classification battle, but it's definitely somewhere where there will be time gaps," Froome said.
"It's not going to be a bunch sprint. It's going to be more selective, and maybe a stage for (Movistar's Alejandro) Valverde or (Julian) Alaphilippe or Dan Martin (both Etixx-QuickStep).
"Those guys are going to be the favourites tomorrow."