Name a list with Table

Clear[first, second, third]
names = {first, second, third}
numbers = {{1, 1}, {2, 2}, {3, 3}}
Table[Evaluate[names[[i]]] = numbers[[i]], {i, 3}]
first
second
third

Clear[first, second, third]    

names = {first, second, third};
numbers = {{1, 1}, {2, 2}, {3, 3}};

With[{names = names}, names = numbers];

first

{1, 1}


With the following definitions:

Clear[first, second, third]
names = {first, second, third}
numbers = {{1, 1}, {2, 2}, {3, 3}}

a one-liner approach would be:

Evaluate@names = numbers

You can see how this works using Trace:

Clear[first, second, third]
names = {first, second, third}
numbers = {{1, 1}, {2, 2}, {3, 3}}
Trace[Evaluate@names = numbers]

(* Out: 
{{names, {first, second, third}}, 
   {numbers, {{1, 1}, {2, 2}, {3, 3}}}, 
   {first, second, third} = {{1, 1}, {2, 2}, {3, 3}}, 
   {{1, 1}, {2, 2}, {3, 3}}} *)