Assume they don't span $\mathbb{R}^n$. Then you can keep adding vectors $u_1,..u_k$ so that at each step, $v_1,...,v_n, u_1,...,u_k$ is free. Since $\mathbb{R}^n$ is finite dimensional, this process stops eventually, so that $v_1,...,v_n,u_1,...u_k$ is free and spans $\mathbb{R}^n$, so it's a basis
But a well-known theorem asserts that any two bases of a (finite dimensional - or with the axiom of choice, any) vector space have the same cardinality, so that $n+k = n$, $k=0$ : $v_1,...,v_n$ spans $\mathbb{R}^n$.
For a more detailed proof you can look up the incomplete basis theorem, which asserts that in a finite dimensional vector space, any free family can be expanded to a basis (actually this is true of any vector space if you add the axiom of choice)
Gram-Schmidt can be used to reduce down to a linearly independent basis! Normally, the way it works is you find a vector orthogonal to the vectors so far, then normalise it. This orthogonal vector will be $0$ if and only if the vector was dependent on the previous ones. So, if you get a zero, ignore that vector and move on to the next one.
It works pretty simply, if you understand Gram-Schmidt geometrically. What Gram-Schmidt does is, at stage $j$, project $v_j$ onto the span of $v_1, \ldots v_{j-1}$, and take the orthogonal complement of this projection. When this returns a zero, this means that the projection onto the span coincides with $v_j$ in the first place, which can only happen when $v_j$ belongs in the span to begin with. Thus, removing $v_j$ from the span will not reduce it.
Best Answer
If you are using a computing environment where matrix operations are fast, you can check that
$$A^T \cdot A = I$$
where $A$ is a matrix of your basis of column-vectors vectors: $(i_1|i_2|i_3)$.
Note that according to matrix multiplication semantics, each element in the result matrix corresponds to the dot-product of a pair of basis vectors. Hence it exactly matches the definition of orthonormality: the dot-product $<i_j,i_k>$ is 1 on the diagonal (when $j = k$) and 0 elsewhere (when $j \ne k$).