Sagan (Tinkoff) now trails Dennis (BMC) by just three seconds in the overall standings with Jos van Emden (LottoNL-Jumbo) third at five seconds.
A five-man breakaway including Yukiya Arashiro (Lampre-Merida), Martin Elminger (IAM), Mark McNally (Wanty- Groupe Gobert), Jesper Asselman (Roompot-Oranje Peloton) and Stijn Steels (Topsport Vlaanderen-Baloise), was caught just 150 metres from the finish line at the end of the 186km stage from Blankenberge to Ardooie in Belgium.
World champion Sagan weaved his way through the traffic to beat Danny Van Poppel (Sky) into second with Nacer Bouhanni (Cofidis) third.
“I think God opened the street for me in the finishing sprint like Moses parted the seas,” Sagan said. “It was fun and I’m very happy to win here.
"Thanks again to all my teammates as they did an unbelievable job on the last laps and helped me today. For now, we’re doing very well but we’ll take it day-by-day and see how we are tomorrow and then in the team time trial.
Sunday is still some way away but for now we’re doing well and we’ll try to continue like this.”
The fourth stage is 202 kilometres from Aalter to Leeuw-St-Pierre.