Here is my version of the argument that does not use complex numbers (explicitly).
It is based on the proofs presented by Paramanand Singh and by Marc van Leeuwen.
Let it be taken for granted that the cyclotomic polynomials $\Phi_n\in\mathbf{Z}[X]$ can be defined recursively using the formulae
$$
\prod_{d:\,d|n}\Phi_d = X^n - 1
$$
(where $n$ and $d$ are assumed to be positive integers).
It follows in particular that each $\Phi_n$ is monic.
Since the Euler's function $\phi$ can be recursively defined using the formulae
$$
\sum_{d:\,d|n}\phi(d) = n,
$$
it follows by induction on $n$ that the degree of $\Phi_n$ is $\phi(n)$.
If $\mathbf{k}$ is a field, two polynomials $P$ and $Q$ in $\mathbf{k}[X]$ shall be called coprime if and only if $(P) + (Q) = (1) = \mathbf{k}[X]$ or, equivalently,1 if and only if they have no common non-unit (i.e., in this case, non-constant) factors in $\mathbf{k}[X]$.
1
These two properties are not equivalent in general in an arbitrary commutative ring.
Lemma 1.
$X^n - 1$ is square-free in $\mathbf{Q}[X]$, and also in $(\mathbf{Z}/(p))[X]$ for every prime $p$ that does not divide $n$.
Proof idea.
The derivative of $X^n - 1$ is $nX^{n-1}$; it is coprime with $X^n - 1$ in $\mathbf{Q}[X]$, and also in $(\mathbf{Z}/(p))[X]$ for every prime $p$ that does not divide $n$.
$\square$
Lemma 2.
$\Phi_m$ and $\Phi_n$ are coprime in $\mathbf{Q}[X]$ for all positive integers $m$ and $n$ such that $m\ne n$.
Proof.
Let $k$ be a positive integer divisible by both $m$ and $n$ (for example: $k = mn$).
Then $\Phi_m\Phi_n$ divides $X^k - 1$ in $\mathbf{Q}[X]$.
Since $X^k - 1$ is square-free in $\mathbf{Q}[X]$, $\Phi_m$ and $\Phi_n$ are coprime in $\mathbf{Q}[X]$.
Q.E.D.
$\square$
Lemma 2'.
$\Phi_m$ and $X^n - 1$ are coprime in $\mathbf{Q}[X]$ for all positive integers $m$ and $n$ such that $m$ does not divide $n$.
Proof idea.
This is an easy corollary of lemma 2.
It can also be proved analogously to lemma 2.
$\square$
Lemma 3.
Let $F$ be a non-unit (i.e., in this case, non-constant) factor of $\Phi_n$ in $\mathbf{Q}[X]$.
If $s$ and $t$ are non-negative integers such that $X^s = X^t$ in $\mathbf{Q}[X]/(F)$, then $s = t$ in $\mathbf{Z}/(n)$.
Proof.
Let $s$ and $t$ be non-negative integers such that $X^s = X^t$ in $\mathbf{Q}[X]/(F)$.
Without loss of generality, assume that $s\ge t$.
Then $F$ divides $(X^{s-t} - 1)X^t$ in $\mathbf{Q}[X]$.
$F$ is coprime with $X^t$ in $\mathbf{Q}[X]$ since so is $X^n - 1$.
Therefore, $F$ divides $X^{s-t} - 1$ in $\mathbf{Q}[X]$.
Therefore, $X^{s-t} - 1$ and $\Phi_n$ are not coprime in $\mathbf{Q}[X]$.
By lemma 2', this implies that $n$ divides $s - t$ (though the case $s - t = 0$ needs to be treated separately).
Thus, $s = t$ in $\mathbf{Z}/(n)$.
Q.E.D.
$\square$
The following lemma seems to be the central part of the argument.
Lemma 4.
Suppose $FG = X^n - 1$ in $\mathbf{Z}[X]$.
Let $p$ be a positive prime that does not divide $n$.
Then $F$ has no common non-unit factors with $G(X^p)$ and divides $F(X^p)$ in $\mathbf{Z}[X]$.
Proof.
Clearly, either $F$ and $G$ are monic, or $-F$ and $-G$ are monic.
Without loss of generality, assume that $F$ and $G$ are monic.
First of all, observe that $FG = X^n - 1$ divides $F(X^p)G(X^p) = X^{pn} - 1$ in $\mathbf{Z}[X]$.
Since $\mathbf{Z}[X]$ is a unique factorisation domain, in order to prove that $F$ divides $F(X^p)$ in $\mathbf{Z}[X]$, it shall be enough to show that $F$ has no common non-unit factors with $G(X^p)$ in $\mathbf{Z}[X]$.
Recall that the reduction of coefficients modulo $p$ defines an epimorphism $\mathbf{Z}[X]\to(\mathbf{Z}/(p))[X]$.
Recall that the application $(\mathbf{Z}/(p))[X]\to(\mathbf{Z}/(p))[X]$ that maps $P\mapsto P^p$ is the so-called Frobenius endomorphism of $(\mathbf{Z}/(p))[X]$, and that it fixes all constant polynomials.
Therefore, for every $P\in\mathbf{Z}[X]$, $P(X^p) = P^p$ in $(\mathbf{Z}/(p))[X]$.
In particular, $F$ divides $F(X^p) = F^p$ in $(\mathbf{Z}/(p))[X]$.
Since $p$ does not divide $n$, $X^n - 1$ is square-free in $(\mathbf{Z}/(p))[X]$ (by lemma 1).
Therefore, $F$ is coprime with $G$ in $(\mathbf{Z}/(p))[X]$.
It follows that for every polynomial $S\in(\mathbf{Z}/(p))[X]$, $F(S)$ is coprime with $G(S)$ in $(\mathbf{Z}/(p))[X]$, and in particular $F^p = F(X^p)$ is coprime with $G(X^p)$ in $(\mathbf{Z}/(p))[X]$.
Hence, $F$ is coprime with $G(X^p)$ in $(\mathbf{Z}/(p))[X]$.
Let $D$ be an arbitrary common divisor of $F$ and $G(X^p)$ in $\mathbf{Z}[X]$.
Since $F$ and $G(X^p)$ are both monic, either $D$ or $-D$ is monic.
Since $F$ and $G(X^p)$ are coprime in $(\mathbf{Z}/(p))[X]$, $D$ is constant in $(\mathbf{Z}/(p))[X]$.
Since $D$ or $-D$ is monic, it follows easily that $D =\pm1$ in $\mathbf{Z}[X]$.
Thus $F$ has no non-unit common divisors with $G(X^p)$ in $\mathbf{Z}[X]$, and hence $F$ divides $F(X^p)$ in $\mathbf{Z}[X]$.
Q.E.D.
$\square$
Lemma 5.
Suppose $\mathbf{r}$ is a commutative ring, $P,S_1,S_2\in\mathbf{r}[X]$, and $P$ divides both $P(S_1)$ and $P(S_2)$ in $\mathbf{r}[X]$.
Then $P$ divides $P(S_1(S_2))$ in $\mathbf{r}[X]$.
(In particular, if $P$ divides both $P(X^m)$ and $P(X^n)$, then $P$ divides $P(X^{mn})$.)
Proof.
Let $P(S_1) = PQ_1$ and $P(S_2) = PQ_2$ in $\mathbf{r}[X]$.
Then $P(S_1(S_2)) = (P(S_1))(S_2) = (PQ_1)(S_2) = P(S_2)Q_1(S_2) = PQ_2Q_1(S_2)$ in $\mathbf{r}[X]$.
$\square$
Lemma 6.
Let $F$ be a factor of $X^n - 1$ in $\mathbf{Q}[X]$ and $m$ be a positive integer coprime with $n$.
Then $F$ divides $F(X^m)$ in $\mathbf{Q}[X]$.
Proof idea.
Using Gauss's lemma about polynomial content, it can be easily shown that $F$ is a rational multiple of a monic polynomial with integer coefficients.
Without loss of generality, assume that $F$ is monic with integer coefficients itself.
Then $F$ divides $X^n - 1$ in $\mathbf{Z}[X]$.
Let $m = p_1p_2\dotsb p_k$, where $p_1,\dotsc,p_k$ are positive primes (not pairwise distinct in general).
By lemma 4, $F$ is divides each of the polynomials $F(X^{p_1}),\dotsc,F(X^{p_k})$ in $\mathbf{Z}[X]$.
Now lemma 5 can be used to show that $F$ divides $F(X^m)$ in $\mathbf{Z}[X]$.
It follows that $F$ divides $F(X^m)$ in $\mathbf{Q}[X]$.
Q.E.D.
$\square$
Lemma 7.
Let $F$ be a non-unit factor of $\Phi_n$ in $\mathbf{Q}[X]$.
Then $F$ has at least $\phi(n)$ distinct roots in $\mathbf{Q}[X]/(F)$.
($F$ can be viewed as an element of $(\mathbf{Q}[X]/(F))[X]$.)
Proof idea.
If $m$ is an integer coprime with $n$ and satisfying $0 < m\le n$, then, by lemma 6, $F$ divides $F(X^m)$ in $\mathbf{Q}[X]$, and, therefore, $X^m$ is a root of $F$ in $\mathbf{Q}[X]/(F)$.
($F$ is viewed here as an element of $(\mathbf{Q}[X]/(F))[X]$ and $X^m$ -- as an element of $\mathbf{Q}[X]/(F)$.)
If $m_1$ and $m_2$ are distinct positive integers $\le n$ coprime with $n$, then $X^{m_1}$ and $X^{m_2}$ are distinct elements of $\mathbf{Q}[X]/(F)$ by lemma 3.
There are $\phi(n)$ distinct positive integers $m$ that are coprime with $n$ and satisfy $0 < m\le n$.
$\square$
Theorem.
$\Phi_n$ is irreducible in $\mathbf{Q}[X]$.
Proof.
Let $F$ be an irreducible factor of $\Phi_n$ in $\mathbf{Q}[X]$.
Then $\mathbf{Q}[X]/(F)$ is a field extension of $\mathbf{Q}$.
By lemma 7, $F$ has at least $\phi(n)$ distinct roots in $\mathbf{Q}[X]/(F)$.
Therefore, $\deg F\ge\phi(n) =\deg\Phi_n$ in $(\mathbf{Q}[X]/(F))[X]$, as well as in $\mathbf{Q}[X]$, and hence $F$ is a rational multiple of $\Phi_n$ in $\mathbf{Q}[X]$.
Thus $\Phi_n$ is irreducible itself in $\mathbf{Q}[X]$.
Q.E.D.
$\square$