Think about how difficult it is to find angles geometrically in 3 dimensions. If you already have coordinates the best way to do it is to calculate the dot product using coordinates and work backward to find the angle.
The purely geometric way would be to find the plane determined by the two vectors and work is '2 dimensions'.
The general proof would look something like this (works for R^3 or R^n as well):
start with vectors
u(u_1,u_2,...,u_n) and v(v_1, v_2, ... ,v_n)
Find the plane determined by u and v, and define a coordinate system (x,y) on that plane, with perpendicular axes and unit coordinates. Prove that if
u(x_u, y_u) and v(x_v, y_v) are the coordinates of u and v in this new coordinate system, then x_u*x_v + x_v*y_v gives the same result as the dot product u*v calculated using the n coordinates. This is the hard part, and impossible without a fair bit of linear algebra.
Now you can use the two dimensional proof to prove that the value calculated using lengths and angles is the same as the value calculated using 2 coordinates, which is the same as the value calculated using n coordinates.