Bennett claimed his fourth grand tour stage win, and his first at the Vuelta, by powering through to the finish after four hours, 25 minutes and two seconds.
He crossed the line ahead of Belgium's Edward Theuns (Trek-Segafredo), who came second, and Slovenian Luka Mezgec (Mitchelton-Scott) in third.
Bennett's Irish compatriot Nicolas Roche (Sunweb) retained the overall leader's red jersey.
Roche retained an advantage of two seconds over Nairo Quintana (Movistar) and five over Rigoberto Uran (Education First), both from Colombia.
Many had circled Bennett as the favourite for a relatively flat third stage and the 28-year-old delivered, securing his 12th win of the season at his first grand tour of the year.
"I felt so bad yesterday, I can't tell you how bad my legs were in the stage," Bennett said afterwards.
"The team got me in the right place at the right time. If it wasn't for the team effort today I definitely wouldn't have got it.
"I went with momentum to the left, got on Trek and I knew it was a really fast final and kicked first. I think Trek waited a little bit too long.
"I'm delighted to get it. It means a lot to take a Grand Tour stage victory, especially in the Irish national champion's jersey."
Bennett pulled away from Theuns in the final 200 metres before Mezgec nipped in front of Jon Aberasturi (Caja Rural) and Phil Bauhaus (Bahrain-Merida) to take third.
Fabio Jakobsen (Deceuninck-QuickStep) and Fernando Gaviria (UAE Team Emirates) had been expected to challenge Bennett for the stage win but Jakobsen settled for seventh after struggling on the last climb. Gaviria lost touch with 11km to go.
The fourth stage on Tuesday will include an 175.5km-route between Cullera and El Puig. Its flat finish should again favour the sprinters before a more mountainous stage five on Wednesday.
Vuelta a Espana third stage results on Monday, 188km from Ibi to Alicante:
1. Sam Bennett (IRL/BOR) 4hr 25min 2 sec, 2. Edward Theuns (BEL/TFS) s.t., 3. Luka Mezgec (SLO/MIT) s.t., 4. Jon Aberasturi (ESP/CJR) s.t., 5. Phil Bauhaus (GER/TBM) s.t., 6. Maximiliano Ariel Richeze (ARG/DQT) 7. Fabio Jakobsen (NED/DQT) s.t., 8. Cyril Barthe (FRA/EUS) s.t., 9. Szymon Sajnok (POL/CPT) 10. Clement Venturini (FRA/ALM)
1. Nicolas Roche (IRL/Sunweb) 9hr 51min 14sec, 2. Nairo Quintana (COL/MOV) at 2sec, 3. Rigoberto Uran (COL/EF1) 8, 4. Mikel Nieve (ESP/MIT) 22, 5. Miguel Angel Lopez (COL/AST) 33, 6. Primoz Roglic (SLO/JUM) 35, 7. Sergio Higuita (COL/EF1) 37, 8. Wilco Kelderman (NED/SUN) 38, 9. Davide Formolo (ITA/BOR) 46, 10. Rafal Majka (POL/BOR) 46.