Dylan Groenewegen (Team Jumbo-Visma) and Jasper Philipsen (UAE Team Emirates) placed second and third respectively in the 166.9km stage.
“At first, I was not sure if I had actually taken the win or not. It was a very close finish. It came down to a very chaotic finale,” said Bennett.
“I’m really happy to have done the hat trick here, and I’m incredibly proud to represent Ireland with the national champion’s kit as well.
“It took a fair bit of energy to stay up the front in the race today and keep myself out of difficulties, and so it’s fantastic to be able to have taken three wins in a row.”
Bennett also held on to the overall lead, with Philipsen 20 seconds back and Groenewegen completing the podium.
View the results below.
Stage three results
1. Sam Bennett (Irl) Bora-Hansgrohe 3:48:36
2. Dylan Groenewegen (Ned) Team Jumbo-Visma
3. Jasper Philipsen (Bel) UAE Team Emirates
4. Jurgen Roelandts (Bel) Movistar Team
5. Florian Senechal (Fra) Deceuninck-Quick-Step
6. Edward Theuns (Bel) Trek-Segafredo
7. Timothy Dupont (Bel) Wanty-Gobert
8. Jakub Mareczko (Ita) CCC Team
9. Arnaud Demare (Fra) Groupama-FDJ
10. Amaury Capiot (Bel) Sport Vlaanderen-Baloise
1. Sam Bennett (Irl) Bora-Hansgrohe 11:16:23
2. Jasper Philipsen (Bel) UAE Team Emirates +0:00:20
3. Dylan Groenewegen (Ned) Team Jumbo-Visma
4. Lukasz Wisniowski (Pol) CCC Team +0:00:22
5. Guillaume Van Keirsbulck (Bel) CCC Team
6. Lars Bak (Den) Dimension Data +0:00:23
7. Josef Cerny (Cze) CCC Team
8. Harry Tanfield (GBr) Katusha-Alpecin
9. Edward Theuns (Bel) Trek-Segafredo +0:00:24
10. Robert Stannard (Aus) Mitchelton-Scott
25. Ryan Gibbons (RSA) Dimension Data +0:00:30
33. Reinardt Janse Van Rensburg (RSA) Dimension Data
70. Willie Smit (RSA) Katusha-Alpecin