Limoges - For the second day in a row a photo-finish decided the stage winner at the Tour de France, with Marcel Kittel coming up trumps on Tuesday.
The burly German held off a charging Bryan Coquard to win by barely a centimetre, 24 hours after Mark Cavendish pipped Andre Greipel by no more than an inch.
"I've seen the photo finish, it could have been different there was really only a hair in it," said Kittel.
"That's nothing after 237km. It was really tight, a tough sprint. At 150-metres from the end I thought my veins would burst!
"I had no idea I'd won, I knew it was so tight that I was just concentrating on throwing myself to the line.
"I'm 1.90m tall, I have long arms and I think that made the difference in the end!"
It was a stunning finish again on a slight incline but heartbreak for Frenchman Coquard, who'd already expressed his disappointment after coming third on Monday.
Peter Sagan finished third to take a time bonus on the line and extend his overall lead over Julian Alaphilippe to 12sec, with Spain's Alejandro Valverde third at 14sec.
After the drab procession of Monday's stage, the peloton returned to racing on Tuesday in the longest stage of the race at 237.5km.
Although they rode 14km more than the previous day, they did it half an hour quicker.
Kittel cut an emotional figure at the end as he achieved his first Tour stage win since succeeding on the Champs Elysees in Paris in the final stage of the 2014 edition only to miss the race altogether last year.
He and Coquard touched shoulders twice in the final sprint but their battle was fair and the big Etixx rider held firm.
On Monday, Cavendish had over-hauled another broad-shouldered German in Greipel by launching his bike for the line.
And although Coquard tried the same trick, Kittel just had the power to resist.
Sagan, who won Sunday's second stage, not only held onto his yellow jersey but also took the sprinters' green points jersey back off Cavendish, who had won the first and third stages.
This time, though, Cavendish found himself boxed in and was unable to fight back to get in the victory mix, finishing eighth.
"I was kind of in the wrong position. It was a bit sketchy, with 5km to go I nearly crashed and I lost my leadout," said the 31-year-old Briton.
After Monday's dour fare, there was a more determined breakaway with four riders getting clear early on.
They also rode at a much faster pace than the 34kph amble that saw Armindo Fonseca spend 140km alone before being joined by Thomas Voeckler on Monday.
The pace was a full 7kph higher on average as Oliver Naesen, Alexis Gougeard, Markel Irizar and Andreas Schillinger made a determined fist of it.
The peloton was also much more switched on after what Sagan had described as the "coffee break" pace of the previous day.
The escapees had a lead of 6min 21sec at one point but the peloton reeled that in to just a couple of minutes, where they held them, as if on the end of a leash.
Gougeard was the first to falter on a slight climb with just under 40km to go, leaving three out front and the lead to the peloton now down to a minute.
Greipel's Lotto team moved to the front of the chase and the end came for the escapees with 7km left, Irizar and Naesen holding on the longest and sharing a handshake once caught.
After that, Kittel and Coquard delivered a most memorable finish.
Results from stage four of the Tour de France, a 237.5km run from Saumur to Limoges on Tuesday:
1. Marcel Kittel (GER/ETI) 5hrs 28mins 30sec
2. Bryan Coquard (FRA/DEN) at 0:00.
3. Peter Sagan (SVK/TIN) 0:00.
4. Dylan Groenewegen (NED/LNL) 0:00.
5. Alexander Kristoff (NOR/KAT) 0:00.
6. Sondre Holst Enger (NOR/IAM) 0:00.
7. Daniel McLay (GBR/FVC) 0:00.
8. Mark Cavendish (GBR/DDT) 0:00.
9. Samuel Dumoulin (FRA/ALM) 0:00.
10. Simon Gerrans (AUS/ORI) 0:00.
11. Edward Theuns (BEL/TRE) 0:00.
12. Sep Vanmarcke (BEL/LNL) 0:00.
13. Lawson Craddock (USA/CAN) 0:00.
14. Michael Matthews (AUS/ORI) 0:00.
15. Julian Alaphilippe (FRA/ETI) 0:00.
16. Alejandro Valverde (ESP/MOV) 0:00.
17. Damiano Caruso (ITA/BMC) 0:00.
18. Andr Greipel (GER/LOT) 0:00.
19. Georg Preidler (AUT/GIA) 0:00.
20. Geoffrey Soupe (FRA/COF) 0:00.