It's even more direct. Fix $g\in\mathrm{GL}_d(\mathbf{Z})$, acting on $T=\mathbf{R}^d/\mathbf{Z}^d$, with no eigenvalue that is a root of unity. Let $T$ be the given torus, $T_{\mathrm{cont}}$ the subgroup of elements contracted by $g$. Define $S$ as the quotient torus $T/\overline{T_{\mathrm{cont}}}$. Then $g$ acts on the torus $S$ with no eigenvalue (on the tangent space) of modulus $<1$. Since the determinant of $g$ on (the tangent space of) $S$ is $\pm 1$, we deduce that all eigenvalues of $g|_S$ have modulus 1, and are not roots of unity. By the next lemma (with $h^{-1}=g|_S$), this forces $\dim(S)=0$, i.e. $\overline{T_{\mathrm{cont}}}$ is dense in $T$. **Lemma.** Let $h$ be a matrix in $\mathrm{GL}_n(\mathbf{Z})$. If all eigenvalues have modulus $\le 1$, then all are roots of unity. Proof: up to conjugate $h$ in $\mathrm{GL}_n(\mathbf{Z})$, we can suppose that $h$ is upper block-triangular matrix with $\mathbf{Q}$-irreducible diagonal blocks. If $s$ is a diagonal block, then $(s^m)_{m\ge 0}$ is bounded and hence achieves finitely many values. So the eigenvalues are roots of unity.