Marcel Kittel overpowered Mark Cavendish in a photo finish to take his third stage win of the 100th Tour de France.
Cavendish got the lead-out he wanted from Gert Steegmans but then saw Kittel come from a bike-and-a-half's length back to take the win.
The margin at the line was half a wheel, but the sight of Cavendish losing a sprint finish from such a position of strength was a major surprise.
Briton Chris Froome retained the overall leader's yellow jersey.
Nicolas Roche finished 22nd in the stage, while Dan Martin came home 74th. Martin lies 13th overall, Roche is further back in 41st.
Cavendish had been looking for a 25th career Tour stage win, which would have moved him level with Andre Leducq for third all-time in Tour history, but will instead be left to reflect on yet another frustrating day in France.
Although he won stage five to Marseille, he has otherwise endured setbacks and disappointments when he hoped to be racking up victories and competing for the points leader's green jersey.
This time, Cavendish could not point the finger at his Omega Pharma-Quick Step lead-out as they beat Kittel's Team Argos-Shimano squad to the final straight.
Points leader Peter Sagan came home third, and now leads Cavendish by 96 points in the battle for the green jersey.
It was a tight and twisty final kilometre but a crash three kilometres from the line had split the peloton to leave plenty of room.
There were Team Sky riders caught in that crash, Chris Froome was ahead of the trouble as David Lopez shepherded him home to maintain his three minute and 25 second overall lead in the general classification.
Immediately after, Kittel told French television he was dedicating the victory to his team-mate Tom Veelers, another reminder of Cavendish's troubles here at the Tour.
The Manxman was sprayed with urine by a spectator during yesterday's time trial to Mont-Saint-Michel in an apparent protest at his actions a day earlier, when he crashed into Veelers in the final 100 metres of stage 10 to Saint-Malo.
Race organisers absolved Cavendish of blame for the crash, but Veelers and many fans saw it differently, and while one spectator took things to extremes, many others whistled and jeered Cavendish during yesterday's time trial.
Cavendish began the day by saying he was keen to put both incidents behind him, having spoken to Veelers on the phone to clear the air.
Speaking before the start of today's stage, Cavendish said of the urine thrown: "It's not a nice thing to happen but in cycling you get so close to the spectators.
"I enjoy that really because there was an incredible amount of British support there and Manx flags. I didn't know there were that many people on the island."
Asked about Veelers, he added: "I spoke with Tom the other day on the phone and we'll get back to bike racing today.
"He's got an incredible sprinter in Marcel Kittel and it's going to be a big battle today."
Those predictions proved to be on the money, but only after Cavendish had come out fighting.
For the first time in the Tour so far he beat his green jersey rivals over the line in the intermediate sprint, finishing ahead of Andre Greipel by a hair's breadth, with Sagan next in line.
However, Cavendish was only sixth at that point as Astana's Francesco Gavazzi had led a five-man breakaway through the intermediate sprint, with Juan Antonion Flecha (Vaconsoleil) close behind.