The 28-year-old Bora-hangrohe sprinter has been on sparkling form this season picking up seven stage victories including two at Paris-Nice and making his case for inclusion in the Tour de France team, which is still far from certain.
"I'm the man to beat now so it's more complicated when the other guys are all keeping an eye on you," Bennett said.
"I waited until the last minute but even then I thought maybe I'd gone too soon, but the legs held out."
The Criterium overall leader Belgium's Dylan Teuns of Bahrein Merida kept the yellow jersey as all the main contenders such as Chris Froome, Adam Yates and Richie Porte finished at the same time.
Ahead of a challenging individual time-trial which will reset the agenda on Wednesday, Tuesday's stage was the only flat one on the eight-day Criterium, which is seen as a form gauge for July's Tour de France.
The Eritrean rider Natnael Berhane and Frenchman Quentin Pacher led a long breakaway through the rolling green fields around the Puy-de-Dome region but were caught up with around five kilometres to go.
That set up a classic mass bunch sprint where Bennett came out ahead of Belgian Wout Van Aert and the Italian Davide Ballerini.
Results after Tuesday's third stage of the Criterium du Dauphine over 171km from Puy-en-Velay to Riom:
1. Sam Bennett (IRL/Bora) 4hr 15min 25sec, 2. Wout Van Aert (BEL/JUM) same time, 3. Davide Ballerini (ITA/AST) s.t., 4. Clement Venturini (FRA/ALM) s.t., 5. Edward Theuns (BEL/TRE) s.t., 6. Edvald Boasson Hagen (NOR/DDT) s.t., 7. Alvaro Hodeg (COL/DEC) s.t., 8. Jens Debusschere (BEL/KAT) s.t., 9. Luka Mezgec (SLO/MIT) s.t., 10. Bjorg Lambrecht (BEL/LOT) s.t.
1. Dylan Teuns (BEL/Bahrain) 11hr 52min 28sec, 2. Guillaume Martin (FRA/WGG) at 3sec, 3. Alexey Lutsenko (KAZ/AST) 20, 4. Jakob Fuglsang (DEN/AST) 20, 5. Nairo Quintana (COL/MOV) 24, 6. Thibaut Pinot (FRA/FDJ) 24, 7. Michael Woods (CAN/EF1) 24, 8. Chris Froome (GBR/INE) 24, 9. Wout Poels (NED/INE) 24, 10. Adam Yates (GBR/MIT) 24, 11. Philippe Gilbert (BEL/DEC) 49, 12. Rudy Molard (FRA/FDJ) 55, 13. Emanuel Buchmann (GER/BOR) 55, 14. Tejay Van Garderen (USA/EF1) 55, 15. Romain Bardet (FRA/ALM) 55, 16. Richie Porte (AUS/TRE) 55, 17. Dan Martin (IRL/UAE) 55, 18. Steven Kruijswijk (NED/JUM)