[proofplan]
We prove that every embedding between models of $T$ preserves and reflects all formulas. First we verify this for quantifier-free formulas: embeddings preserve term interpretation and preserve and reflect atomic formulas, hence preserve and reflect Boolean combinations of atomic formulas. Then quantifier elimination replaces an arbitrary formula by a $T$-equivalent quantifier-free formula, and the quantifier-free preservation result transfers truth from $M$ to $N$ and back.
[/proofplan]
[step:Show that embeddings preserve the interpretation of terms]
Let $M \models T$ and $N \models T$, and let
\begin{align*}
f: M \to N
\end{align*}
be an $L$-embedding. For a nonnegative integer $n$, let $a = (a_1,\dots,a_n) \in M^n$ be a tuple, and write
\begin{align*}
f(a) := (f(a_1),\dots,f(a_n)) \in N^n.
\end{align*}
We claim that for every $L$-term $t(x_1,\dots,x_n)$,
\begin{align*}
f\bigl(t^M(a)\bigr) = t^N(f(a)).
\end{align*}
This is proved by induction on the construction of $t$. If $t$ is the variable $x_i$, then
\begin{align*}
f\bigl(t^M(a)\bigr) = f(a_i) = t^N(f(a)).
\end{align*}
If $t$ is a constant symbol $c$, then the definition of $L$-embedding gives
\begin{align*}
f(c^M) = c^N.
\end{align*}
Finally, suppose
\begin{align*}
t = F(t_1,\dots,t_m),
\end{align*}
where $F$ is an $m$-ary function symbol of $L$ and $t_1,\dots,t_m$ are $L$-terms. By the induction hypothesis,
\begin{align*}
f\bigl(t_j^M(a)\bigr) = t_j^N(f(a))
\end{align*}
for every $j \in \{1,\dots,m\}$. Since $f$ is an $L$-embedding, it preserves the interpretation of $F$, so
\begin{align*}
f\bigl(t^M(a)\bigr)
&= f\bigl(F^M(t_1^M(a),\dots,t_m^M(a))\bigr) \\
&= F^N\bigl(f(t_1^M(a)),\dots,f(t_m^M(a))\bigr) \\
&= F^N\bigl(t_1^N(f(a)),\dots,t_m^N(f(a))\bigr) \\
&= t^N(f(a)).
\end{align*}
Thus embeddings preserve term interpretation.
[/step]
[step:Prove that embeddings preserve and reflect quantifier-free formulas]
We prove that for every quantifier-free $L$-formula $\theta(x_1,\dots,x_n)$ and every tuple $a \in M^n$,
\begin{align*}
M \models \theta(a) \iff N \models \theta(f(a)).
\end{align*}
First consider atomic formulas. If
\begin{align*}
\theta(x_1,\dots,x_n) \equiv t_1(x_1,\dots,x_n) = t_2(x_1,\dots,x_n),
\end{align*}
then the preceding step gives
\begin{align*}
f\bigl(t_1^M(a)\bigr) = t_1^N(f(a)), \qquad
f\bigl(t_2^M(a)\bigr) = t_2^N(f(a)).
\end{align*}
Since an $L$-embedding is injective,
\begin{align*}
t_1^M(a) = t_2^M(a)
\iff
f\bigl(t_1^M(a)\bigr) = f\bigl(t_2^M(a)\bigr)
\iff
t_1^N(f(a)) = t_2^N(f(a)).
\end{align*}
Hence equality atoms are preserved and reflected.
If
\begin{align*}
\theta(x_1,\dots,x_n) \equiv R(t_1(x_1,\dots,x_n),\dots,t_m(x_1,\dots,x_n)),
\end{align*}
where $R$ is an $m$-ary relation symbol of $L$, then the preceding step identifies each interpreted term under $f$. Since $f$ is an $L$-embedding, it preserves and reflects the interpretation of $R$, so
\begin{align*}
M \models R(t_1(a),\dots,t_m(a))
\iff
N \models R(t_1(f(a)),\dots,t_m(f(a))).
\end{align*}
Thus all atomic formulas are preserved and reflected.
Now proceed by induction on the construction of quantifier-free formulas from atomic formulas using Boolean connectives. The equivalence is preserved under negation because
\begin{align*}
M \models \neg \alpha(a)
\iff
\text{not } M \models \alpha(a)
\iff
\text{not } N \models \alpha(f(a))
\iff
N \models \neg \alpha(f(a)).
\end{align*}
It is preserved under conjunction because
\begin{align*}
M \models (\alpha \wedge \beta)(a)
&\iff M \models \alpha(a) \text{ and } M \models \beta(a) \\
&\iff N \models \alpha(f(a)) \text{ and } N \models \beta(f(a)) \\
&\iff N \models (\alpha \wedge \beta)(f(a)).
\end{align*}
The remaining Boolean connectives are handled by their definitions in terms of negation and conjunction. Therefore every quantifier-free formula is preserved and reflected by $f$.
[/step]
[step:Replace an arbitrary formula by a quantifier-free equivalent]
Let $\varphi(x_1,\dots,x_n)$ be an arbitrary $L$-formula, where $n \geq 0$. Since $T$ has quantifier elimination, there exists a quantifier-free $L$-formula $\psi(x_1,\dots,x_n)$ such that
\begin{align*}
T \models \forall x_1 \cdots \forall x_n \bigl(\varphi(x_1,\dots,x_n) \leftrightarrow \psi(x_1,\dots,x_n)\bigr).
\end{align*}
Because $M \models T$ and $N \models T$, this gives, for every $a \in M^n$,
\begin{align*}
M \models \varphi(a) \iff M \models \psi(a),
\end{align*}
and
\begin{align*}
N \models \psi(f(a)) \iff N \models \varphi(f(a)).
\end{align*}
By the quantifier-free preservation result from the previous step,
\begin{align*}
M \models \psi(a) \iff N \models \psi(f(a)).
\end{align*}
Combining these three equivalences yields
\begin{align*}
M \models \varphi(a) \iff N \models \varphi(f(a)).
\end{align*}
[/step]
[step:Conclude that every embedding between models of $T$ is elementary]
The formula $\varphi(x_1,\dots,x_n)$, the nonnegative integer $n$, and the tuple $a \in M^n$ were arbitrary. Therefore, for every $L$-formula $\varphi(x_1,\dots,x_n)$ and every tuple $a \in M^n$,
\begin{align*}
M \models \varphi(a) \iff N \models \varphi(f(a)).
\end{align*}
This is exactly the statement that
\begin{align*}
f: M \to N
\end{align*}
is an elementary embedding. Since $M$, $N$, and $f$ were arbitrary, every embedding between models of $T$ is elementary. Hence $T$ is model complete.
[/step]