Despite a magnificent unbeaten 70 off 51 balls from Craig Kieswetter, Somerset could only total 148 for six and that was never likely to be enough after Steven Davies and Jason Roy launched Surrey's reply with an opening stand of 62 inside eight overs.
Vikram Solanki then hit Irish international left-arm spinner George Dockrell for successive legside sixes at the end of the 13th over to leave Surrey needing less than six an over and they sealed victory with six balls to spare.
Peter Trego had raised Somerset hopes by having Roy spectacularly caught for 28 by a leaping Jos Buttler, running around from deep midwicket and then seeing Davies hole out on the legside boundary for a fluent 23-ball 35.
But Solanki's selective hitting made sure the game went Surrey's way, with Gary Wilson also batting with great good sense for his 19 after Azhar Mahmood had drilled Yasir Arafat to mid-off on 14.
Wilson, though, was run out in extraordinary fashion as he looked for an overthrow after Zafar Ansari struggled to avoid being run out himself by a direct hit on the bowlers' stumps, while Zander de Bruyn short of his ground following Trego's throw from mid-off in the same over.
Surrey got over the line despite the late flurry of wickets as Jon Lewis struck the winning boundary from the last ball of the 19th over.