The Irishman won the intermediate sprint, then backed up at the sprint finish with third place - ahead of Sagan in fourth - to move ahead in the green jersey standings by nine points.
In doing so Bennett became the third Irish rider to wear green, with Stephen Roche and four-time green jersey winner Sean Kelly the others to accomplish the feat.
“I was focused today on taking the green jersey and having it and following in the footsteps of Sean Kelly and Stephen Roche feels amazing,” said Bennett. “I am delighted and proud with it and want to enjoy this moment and continue fighting for green.”
Bennett did rue his final sprint a bit, getting caught out on Sagan's wheel as the Team Sunweb train moved away up the road.
“I think, I almost just forgot to go for the win I got so focused on Peter," said Bennett, "my focus swapped, I don’t know… I just lost track a bit but I have the green and I have to enjoy that.”
"I think I got so caught up in trying to get green that I almost forgot to just go for the win. I was so focused on being there that I was trying to get the green, of course also trying to win, but it’s like I forgot my killer instincts."
“It was really hard in the last 2-3k to go. I actually thought I’d blow up and wouldn’t make it to the sprint it was so hard. I kinda recovered then on a little descent before the run-in,” he said of a very testing final phase to an otherwise uneventful day after no breakaway formed throughout the stage.
Sagan was his normal nonchalant self, not building up the battle for sprint points at this stage of the race.
"It's only the fifth day," said Sagan. "We arrive for a bunch sprint and I lose some points but I still got some points. The Tour de France is long and the climbing stages are coming. I have to be relaxed."
Bennett currently leads the classification by nine points, his tally is 123 points to Sagan's 114. Alexander Kristoff (UAE Team Emirates) is next with 93 and then Caleb Ewan (Lotto Soudal) with 75 points.
The Tour de France continues tonight with a 191-kilometre stage from Le Teil to Mont Aigoual, with the broadcast starting from 9.00pm (AEST) on the SBS ŠKODA Tour Tracker App, then from 9.30pm (AEST) on SBS and SBS On Demand.