From Tom + -son, originally meaning son of Thomas. Being derived from Thomas ultimately gives this surname an Aramaic derivation - teoma 'twin'.