[proofplan]
We fix a root $\alpha$ and use the Killing form to build the embedded $\mathfrak{sl}_2(k)$ generated by a nonzero vector in $\mathfrak{g}_{\alpha}$ and a suitably normalized vector in $\mathfrak{g}_{-\alpha}$. The root-string theorem supplies the two rank-one facts needed here: $\alpha$ is non-isotropic and $2\alpha$ is not a root. We then compare an arbitrary vector of $\mathfrak{g}_{\alpha}$ with the chosen root vector, subtract the component paired with $\mathfrak{g}_{-\alpha}$, and use the $\mathfrak{sl}_2$ commutator relation to force the remainder to vanish.
[/proofplan]
[step:Use the Killing form to construct the $\mathfrak{sl}_2(k)$ attached to $\alpha$]
Let
\begin{align*}
B: \mathfrak{g} \times \mathfrak{g} &\to k \\
(x,y) &\mapsto \operatorname{tr}(\operatorname{ad}_x \circ \operatorname{ad}_y)
\end{align*}
be the Killing form of $\mathfrak{g}$. Let $\mathfrak{h}\subset \mathfrak{g}$ be the Cartan subalgebra with root system $\Phi\subset \mathfrak{h}^*$. Since $\mathfrak{g}$ is semisimple and $\operatorname{char} k = 0$, [Cartan's criterion for semisimplicity](/theorems/???) gives that $B$ is nondegenerate. Moreover, the standard [Killing-form orthogonality of root spaces](/theorems/???) gives
\begin{align*}
B(\mathfrak{g}_{\beta},\mathfrak{g}_{\gamma}) = 0
\quad\text{unless}\quad
\beta+\gamma=0,
\end{align*}
and the induced pairing
\begin{align*}
\mathfrak{g}_{\alpha} \times \mathfrak{g}_{-\alpha} &\to k \\
(u,v) &\mapsto B(u,v)
\end{align*}
is nondegenerate. The same standard result gives that the restriction
\begin{align*}
B|_{\mathfrak{h}\times\mathfrak{h}}: \mathfrak{h}\times\mathfrak{h} &\to k
\end{align*}
is nondegenerate.
For a linear functional $\mu\in \mathfrak{h}^*$, define the weight space
\begin{align*}
\mathfrak{g}_{\mu}:=\{w\in \mathfrak{g}: [h,w]=\mu(h)w\text{ for every }h\in\mathfrak{h}\}.
\end{align*}
With this convention, $\mathfrak{g}_0=\mathfrak{h}$, and if $\mu\notin \Phi\cup\{0\}$ then $\mathfrak{g}_{\mu}=0$.
Define $t_{\alpha} \in \mathfrak{h}$ to be the unique element satisfying
\begin{align*}
B(t_{\alpha},h)=\alpha(h)
\quad\text{for every } h \in \mathfrak{h}.
\end{align*}
The [Root String Theorem](/theorems/???) for finite-dimensional semisimple Lie algebras over algebraically closed fields of characteristic $0$ implies $\alpha(t_{\alpha}) \ne 0$ and $2\alpha \notin \Phi$; here we use the root-string result only in a form that is independent of the one-dimensionality of root spaces.
Choose $0 \ne x \in \mathfrak{g}_{\alpha}$. By nondegeneracy of the pairing between $\mathfrak{g}_{\alpha}$ and $\mathfrak{g}_{-\alpha}$, choose $y \in \mathfrak{g}_{-\alpha}$ such that
\begin{align*}
B(x,y)=\frac{2}{\alpha(t_{\alpha})}.
\end{align*}
For $u \in \mathfrak{g}_{\alpha}$ and $v \in \mathfrak{g}_{-\alpha}$, invariance of $B$ gives, for every $h \in \mathfrak{h}$,
\begin{align*}
B([u,v],h)
=
B(u,[v,h])
=
B(u,\alpha(h)v)
=
\alpha(h)B(u,v)
=
B(B(u,v)t_{\alpha},h).
\end{align*}
Since $B|_{\mathfrak{h}\times\mathfrak{h}}$ is nondegenerate, this proves
\begin{align*}
[u,v]=B(u,v)t_{\alpha}.
\end{align*}
In particular, if
\begin{align*}
h_{\alpha}:=[x,y],
\end{align*}
then
\begin{align*}
h_{\alpha}
=
\frac{2}{\alpha(t_{\alpha})}t_{\alpha}.
\end{align*}
Therefore
\begin{align*}
[h_{\alpha},x] &= \alpha(h_{\alpha})x = 2x,\\
[h_{\alpha},y] &= -\alpha(h_{\alpha})y = -2y,\\
[x,y] &= h_{\alpha}.
\end{align*}
Thus the subalgebra
\begin{align*}
\mathfrak{s}:=\operatorname{span}_k\{x,h_{\alpha},y\}
\end{align*}
is isomorphic to $\mathfrak{sl}_2(k)$ under the correspondence $e \mapsto x$, $h \mapsto h_{\alpha}$, and $f \mapsto y$.
[guided]
The role of the Killing form is to let us normalize a root vector and an opposite root vector so that they satisfy the exact $\mathfrak{sl}_2(k)$ relations. Define
\begin{align*}
B: \mathfrak{g} \times \mathfrak{g} &\to k \\
(x,y) &\mapsto \operatorname{tr}(\operatorname{ad}_x \circ \operatorname{ad}_y).
\end{align*}
Let $\mathfrak{h}\subset \mathfrak{g}$ be the Cartan subalgebra with root system $\Phi\subset \mathfrak{h}^*$. Because $\mathfrak{g}$ is semisimple and the field has characteristic $0$, [Cartan's criterion for semisimplicity](/theorems/???) says that $B$ is nondegenerate. The root space decomposition is orthogonal for $B$ in the following precise sense:
\begin{align*}
B(\mathfrak{g}_{\beta},\mathfrak{g}_{\gamma})=0
\quad\text{unless}\quad
\beta+\gamma=0.
\end{align*}
Consequently, the [Killing-form orthogonality of root spaces](/theorems/???) implies that $B$ pairs $\mathfrak{g}_{\alpha}$ nondegenerately with $\mathfrak{g}_{-\alpha}$ and that
\begin{align*}
B|_{\mathfrak{h}\times\mathfrak{h}}: \mathfrak{h}\times\mathfrak{h} &\to k
\end{align*}
is nondegenerate.
For a linear functional $\mu\in \mathfrak{h}^*$, define the weight space
\begin{align*}
\mathfrak{g}_{\mu}:=\{w\in \mathfrak{g}: [h,w]=\mu(h)w\text{ for every }h\in\mathfrak{h}\}.
\end{align*}
This definition makes sense for every $\mu$, not only for roots. In particular, $\mathfrak{g}_0=\mathfrak{h}$, and if $\mu\notin \Phi\cup\{0\}$ then $\mathfrak{g}_{\mu}=0$.
We now encode the root $\alpha$ as an element of $\mathfrak{h}$. Define $t_{\alpha} \in \mathfrak{h}$ by
\begin{align*}
B(t_{\alpha},h)=\alpha(h)
\quad\text{for every } h \in \mathfrak{h}.
\end{align*}
The [Root String Theorem](/theorems/???) gives two rank-one facts: $\alpha(t_{\alpha}) \ne 0$ and $2\alpha$ is not a root. We use this theorem only in a form proved independently of the one-dimensionality of root spaces. The first fact lets us normalize; the second will later imply that brackets of two vectors in $\mathfrak{g}_{\alpha}$ vanish.
Choose a nonzero vector $x \in \mathfrak{g}_{\alpha}$. Since the pairing with $\mathfrak{g}_{-\alpha}$ is nondegenerate, we may choose $y \in \mathfrak{g}_{-\alpha}$ such that
\begin{align*}
B(x,y)=\frac{2}{\alpha(t_{\alpha})}.
\end{align*}
For arbitrary $u \in \mathfrak{g}_{\alpha}$ and $v \in \mathfrak{g}_{-\alpha}$, the bracket $[u,v]$ lies in $\mathfrak{g}_0=\mathfrak{h}$. To identify it, test against $h \in \mathfrak{h}$ using [invariance of the Killing form](/theorems/3808):
\begin{align*}
B([u,v],h)
=
B(u,[v,h])
=
B(u,\alpha(h)v)
=
\alpha(h)B(u,v)
=
B(B(u,v)t_{\alpha},h).
\end{align*}
Nondegeneracy on $\mathfrak{h}$ gives
\begin{align*}
[u,v]=B(u,v)t_{\alpha}.
\end{align*}
Applying this to $u=x$ and $v=y$, we get
\begin{align*}
h_{\alpha}:=[x,y]=\frac{2}{\alpha(t_{\alpha})}t_{\alpha}.
\end{align*}
Then
\begin{align*}
[h_{\alpha},x] &= \alpha(h_{\alpha})x = 2x,\\
[h_{\alpha},y] &= -\alpha(h_{\alpha})y = -2y,\\
[x,y] &= h_{\alpha}.
\end{align*}
These are exactly the defining relations of $\mathfrak{sl}_2(k)$, so
\begin{align*}
\mathfrak{s}:=\operatorname{span}_k\{x,h_{\alpha},y\}
\end{align*}
is an embedded copy of $\mathfrak{sl}_2(k)$.
[/guided]
[/step]
[step:Subtract the component detected by the opposite root vector]
Let $z \in \mathfrak{g}_{\alpha}$ be arbitrary. Define
\begin{align*}
\lambda:=\frac{B(z,y)}{B(x,y)}
\qquad\text{and}\qquad
z_0:=z-\lambda x \in \mathfrak{g}_{\alpha}.
\end{align*}
Then
\begin{align*}
B(z_0,y)
=
B(z,y)-\lambda B(x,y)
=
0.
\end{align*}
Using the bracket formula from the previous step,
\begin{align*}
[z_0,y]=B(z_0,y)t_{\alpha}=0.
\end{align*}
Since $2\alpha \notin \Phi$ and $2\alpha\ne 0$, the definition of $\mathfrak{g}_{2\alpha}$ above gives $\mathfrak{g}_{2\alpha}=0$. The [root-space bracket rule](/theorems/???) therefore gives
\begin{align*}
[x,z_0]\in \mathfrak{g}_{2\alpha}=0.
\end{align*}
Finally, because $z_0 \in \mathfrak{g}_{\alpha}$ and $\alpha(h_{\alpha})=2$,
\begin{align*}
[h_{\alpha},z_0]=2z_0.
\end{align*}
[guided]
We now show that every vector in $\mathfrak{g}_{\alpha}$ is a scalar multiple of the fixed vector $x$. Let $z \in \mathfrak{g}_{\alpha}$. The vector $y \in \mathfrak{g}_{-\alpha}$ gives a linear functional on $\mathfrak{g}_{\alpha}$ by pairing with the Killing form. We remove from $z$ the same paired component that $x$ has by defining
\begin{align*}
\lambda:=\frac{B(z,y)}{B(x,y)}
\qquad\text{and}\qquad
z_0:=z-\lambda x.
\end{align*}
Here $B(x,y) \ne 0$ by the normalization chosen in the previous step. Since both $z$ and $x$ lie in $\mathfrak{g}_{\alpha}$, the vector $z_0$ also lies in $\mathfrak{g}_{\alpha}$. The definition of $\lambda$ gives
\begin{align*}
B(z_0,y)
=
B(z,y)-\lambda B(x,y)
=
0.
\end{align*}
The bracket formula already proved says that for vectors in opposite root spaces,
\begin{align*}
[u,v]=B(u,v)t_{\alpha}.
\end{align*}
Applying this with $u=z_0$ and $v=y$ gives
\begin{align*}
[z_0,y]=0.
\end{align*}
We also need the bracket with $x$. Since $x,z_0 \in \mathfrak{g}_{\alpha}$, the [root-space bracket rule](/theorems/???) says that their bracket lies in $\mathfrak{g}_{2\alpha}$. The root-string theorem gives $2\alpha \notin \Phi$, and $2\alpha\ne 0$, so the definition of $\mathfrak{g}_{2\alpha}$ above gives $\mathfrak{g}_{2\alpha}=0$. Therefore
\begin{align*}
[x,z_0]=0.
\end{align*}
Finally, because $z_0$ lies in the $\alpha$-root space and $h_{\alpha}$ was normalized by $\alpha(h_{\alpha})=2$, we have
\begin{align*}
[h_{\alpha},z_0]=2z_0.
\end{align*}
Thus $z_0$ is killed by both opposite root operators $x$ and $y$, but has $h_{\alpha}$-weight $2$.
[/guided]
[/step]
[step:Use the $\mathfrak{sl}_2(k)$ commutator relation to force the remainder to vanish]
Consider the adjoint representation
\begin{align*}
\rho: \mathfrak{s} &\to \mathfrak{gl}(\mathfrak{g}) \\
a &\mapsto \operatorname{ad}_a.
\end{align*}
The relations obtained above give
\begin{align*}
\rho(x)z_0=0,
\qquad
\rho(y)z_0=0,
\qquad
\rho(h_{\alpha})z_0=2z_0.
\end{align*}
Since $h_{\alpha}=[x,y]$, the representation identity gives
\begin{align*}
\rho(h_{\alpha})
=
[\rho(x),\rho(y)]
=
\rho(x)\rho(y)-\rho(y)\rho(x).
\end{align*}
Applying this identity to $z_0$ yields
\begin{align*}
2z_0
=
\rho(h_{\alpha})z_0
=
\rho(x)\rho(y)z_0-\rho(y)\rho(x)z_0
=
0.
\end{align*}
Because $\operatorname{char} k=0$, it follows that $z_0=0$. Hence $z=\lambda x$, so every element of $\mathfrak{g}_{\alpha}$ lies in $\operatorname{span}_k\{x\}$. Since $x \ne 0$, we conclude
\begin{align*}
\dim_k \mathfrak{g}_{\alpha}=1.
\end{align*}
This proves the theorem.
[/step]