[proofplan]
Let $R=\operatorname{rad}(\mathfrak g)$, and let $[\mathfrak g,R]$ denote the $F$-linear span of all brackets $[x,r]$ with $x\in\mathfrak g$ and $r\in R$. The main point is a trace lemma for solvable ideals: in any finite-dimensional representation of $\mathfrak g$, every element of $[\mathfrak g,R]$ has trace pairing zero against every element of $\mathfrak g$. We prove this by taking a composition series as a $\mathfrak g$-module; on each irreducible quotient, the solvable ideal $R$ acts by scalars, so $[\mathfrak g,R]$ acts by zero on the quotient. Applying this lemma to the adjoint representation gives $\operatorname{tr}(\operatorname{ad}_{\mathfrak g}([r,x])\operatorname{ad}_{\mathfrak g}(y))=0$, and [invariance of the Killing form](/theorems/3808) converts this into $\kappa_{\mathfrak g}(r,[x,y])=0$.
[/proofplan]
[step:Prove the trace lemma for a solvable ideal in a finite-dimensional representation]
Let
\begin{align*}
\rho: \mathfrak g &\to \mathfrak{gl}(V)
\end{align*}
be a finite-dimensional representation of $\mathfrak g$ over $F$, where $V$ is a finite-dimensional $F$-[vector space](/page/Vector%20Space). We claim that for every $a \in [\mathfrak g,R]$ and every $b \in \mathfrak g$,
\begin{align*}
\operatorname{tr}(\rho(a)\circ \rho(b))=0.
\end{align*}
Choose a composition series of $V$ as a $\mathfrak g$-module:
\begin{align*}
0 = V_0 \subset V_1 \subset \cdots \subset V_m = V,
\end{align*}
where each quotient $Q_i := V_i/V_{i-1}$ is an irreducible finite-dimensional $\mathfrak g$-module. The quotient $Q_i$ is finite-dimensional because it is a quotient of the finite-dimensional vector space $V_i\subset V$. Since $R$ is a solvable ideal of $\mathfrak g$, $Q_i$ is a finite-dimensional irreducible $\mathfrak g$-module over the algebraically closed field $F$ of characteristic $0$, and the standard ideal form of [Lie's Theorem for Solvable Ideals in Irreducible Modules](/page/Lie%27s%20Theorem%20for%20Solvable%20Ideals%20in%20Irreducible%20Modules) says that $R$ acts on $Q_i$ by a scalar character
\begin{align*}
\lambda_i: R &\to F.
\end{align*}
Let $u \in \mathfrak g$ and $r \in R$. On $Q_i$, the operator induced by $\rho([u,r])$ is
\begin{align*}
[\rho(u)|_{Q_i},\rho(r)|_{Q_i}]
=
[\rho(u)|_{Q_i},\lambda_i(r)\operatorname{id}_{Q_i}]
=
0.
\end{align*}
By linearity, every $a \in [\mathfrak g,R]$ induces the zero operator on each quotient $Q_i$.
Because each $V_i$ is a $\mathfrak g$-submodule, $\rho(b)$ preserves the flag $(V_i)_{i=0}^m$ for every $b \in \mathfrak g$. Also, since $a$ induces the zero operator on every quotient $Q_i$, $\rho(a)$ maps each $V_i$ into $V_{i-1}$. With respect to a basis adapted to the flag, $\rho(b)$ is block upper triangular, while $\rho(a)$ is strictly block upper triangular. Therefore $\rho(a)\circ \rho(b)$ is strictly block upper triangular, so all of its diagonal blocks have trace $0$. Hence
\begin{align*}
\operatorname{tr}(\rho(a)\circ \rho(b))=0.
\end{align*}
[guided]
The trace lemma is designed to isolate the representation-theoretic fact needed later for the Killing form. We take an arbitrary finite-dimensional representation
\begin{align*}
\rho: \mathfrak g &\to \mathfrak{gl}(V)
\end{align*}
and prove that elements of $[\mathfrak g,R]$ are trace-orthogonal to all represented elements $\rho(b)$.
Because $V$ is finite-dimensional, choose a composition series as a $\mathfrak g$-module:
\begin{align*}
0 = V_0 \subset V_1 \subset \cdots \subset V_m = V,
\end{align*}
where each quotient $Q_i := V_i/V_{i-1}$ is irreducible. The quotient $Q_i$ is finite-dimensional because $V_i$ is a subspace of the finite-dimensional vector space $V$ and quotients of finite-dimensional vector spaces are finite-dimensional. The point of using a $\mathfrak g$-composition series, rather than only an $R$-composition series, is that every $\rho(b)$ with $b \in \mathfrak g$ preserves the entire flag.
Now use the solvability of $R$. We apply the standard ideal form of [Lie's Theorem for Solvable Ideals in Irreducible Modules](/page/Lie%27s%20Theorem%20for%20Solvable%20Ideals%20in%20Irreducible%20Modules). Its hypotheses are satisfied: $R$ is a solvable ideal of $\mathfrak g$, $Q_i$ is a finite-dimensional irreducible $\mathfrak g$-module, and the base field $F$ is algebraically closed of characteristic $0$. Therefore, on every quotient $Q_i$, the action of $R$ is scalar. Thus there is a linear character
\begin{align*}
\lambda_i: R &\to F
\end{align*}
such that $\rho(r)|_{Q_i}=\lambda_i(r)\operatorname{id}_{Q_i}$ for every $r \in R$. This is the only place where algebraic closedness and characteristic $0$ are used.
Let $u \in \mathfrak g$ and $r \in R$. Since $R$ is an ideal, $[u,r]\in R$, so $\rho([u,r])$ acts on $Q_i$. The representation identity gives
\begin{align*}
\rho([u,r])|_{Q_i}
=
[\rho(u)|_{Q_i},\rho(r)|_{Q_i}].
\end{align*}
But $\rho(r)|_{Q_i}=\lambda_i(r)\operatorname{id}_{Q_i}$ is a scalar operator, and every operator commutes with a scalar operator. Therefore
\begin{align*}
\rho([u,r])|_{Q_i}
=
[\rho(u)|_{Q_i},\lambda_i(r)\operatorname{id}_{Q_i}]
=
0.
\end{align*}
Since $[\mathfrak g,R]$ is spanned by such brackets $[u,r]$, every $a \in [\mathfrak g,R]$ acts as zero on every quotient $Q_i$.
This quotient statement has a concrete matrix meaning. Choose a basis of $V$ adapted to the flag $(V_i)_{i=0}^m$. Because $\rho(b)$ preserves each $V_i$, its matrix is block upper triangular. Because $\rho(a)$ acts as zero on each quotient $Q_i$, its diagonal blocks are zero, so its matrix is strictly block upper triangular. The product $\rho(a)\circ \rho(b)$ is again strictly block upper triangular, hence has zero trace. Thus
\begin{align*}
\operatorname{tr}(\rho(a)\circ \rho(b))=0
\end{align*}
for every $a \in [\mathfrak g,R]$ and every $b \in \mathfrak g$.
[/guided]
[/step]
[step:Apply the trace lemma to the adjoint representation]
Apply the previous step to the adjoint representation
\begin{align*}
\operatorname{ad}_{\mathfrak g}: \mathfrak g &\to \mathfrak{gl}(\mathfrak g) \\
x &\mapsto \operatorname{ad}_{\mathfrak g}(x),
\end{align*}
where $\operatorname{ad}_{\mathfrak g}(x):\mathfrak g\to\mathfrak g$ is the [linear map](/page/Linear%20Map) $z\mapsto [x,z]$. Since $R$ is an ideal of $\mathfrak g$, for every $r \in R$ and $x \in \mathfrak g$ we have
\begin{align*}
[r,x] \in [R,\mathfrak g]=[\mathfrak g,R]\subseteq R.
\end{align*}
The trace lemma gives, for every $y \in \mathfrak g$,
\begin{align*}
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}([r,x])\circ \operatorname{ad}_{\mathfrak g}(y))=0.
\end{align*}
By the definition of the Killing form, this is
\begin{align*}
\kappa_{\mathfrak g}([r,x],y)=0.
\end{align*}
[guided]
We now apply the trace lemma to the specific representation that defines the Killing form. The adjoint representation is the map
\begin{align*}
\operatorname{ad}_{\mathfrak g}: \mathfrak g &\to \mathfrak{gl}(\mathfrak g) \\
x &\mapsto \operatorname{ad}_{\mathfrak g}(x),
\end{align*}
where $\operatorname{ad}_{\mathfrak g}(x):\mathfrak g\to\mathfrak g$ is the linear map $z\mapsto [x,z]$. This is a finite-dimensional representation because $\mathfrak g$ is finite-dimensional over $F$.
Let $r\in R$ and $x\in\mathfrak g$. Since $R$ is an ideal of $\mathfrak g$, the bracket $[r,x]$ lies in $[R,\mathfrak g]=[\mathfrak g,R]$. Therefore the trace lemma applies with $a=[r,x]$ and with an arbitrary element $y\in\mathfrak g$ in the role of $b$. It gives
\begin{align*}
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}([r,x])\circ \operatorname{ad}_{\mathfrak g}(y))=0.
\end{align*}
By the definition of the Killing form on $\mathfrak g$,
\begin{align*}
\kappa_{\mathfrak g}(u,v)
=
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(u)\circ \operatorname{ad}_{\mathfrak g}(v))
\end{align*}
for $u,v\in\mathfrak g$. Substituting $u=[r,x]$ and $v=y$ gives
\begin{align*}
\kappa_{\mathfrak g}([r,x],y)=0.
\end{align*}
[/guided]
[/step]
[step:Use invariance of the Killing form to move the bracket]
Let $r \in R$ and $x,y \in \mathfrak g$. We verify the required invariance identity directly from the trace definition. Since
\begin{align*}
\operatorname{ad}_{\mathfrak g}([r,x])
=
\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(x)
-
\operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(r),
\end{align*}
we compute, using cyclicity of trace for endomorphisms of the finite-dimensional vector space $\mathfrak g$,
\begin{align*}
\kappa_{\mathfrak g}([r,x],y)
&=
\operatorname{tr}\bigl((\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(x)
-
\operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(r))
\circ \operatorname{ad}_{\mathfrak g}(y)\bigr) \\
&=
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(y))
-
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(y)) \\
&=
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(y))
-
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(y)\circ \operatorname{ad}_{\mathfrak g}(x)) \\
&=
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(r)\circ
(\operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(y)
-
\operatorname{ad}_{\mathfrak g}(y)\circ \operatorname{ad}_{\mathfrak g}(x))) \\
&=
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}([x,y])) \\
&=
\kappa_{\mathfrak g}(r,[x,y]).
\end{align*}
The previous step proved that the left-hand side is $0$, so
\begin{align*}
\kappa_{\mathfrak g}(r,[x,y])=0.
\end{align*}
[guided]
We now convert the trace statement from the previous step into the desired orthogonality statement. The previous step gives
\begin{align*}
\kappa_{\mathfrak g}([r,x],y)=0.
\end{align*}
We need the bracket on the second argument instead, because elements of $[\mathfrak g,\mathfrak g]$ are linear combinations of brackets $[x,y]$.
The required identity is the invariance of the Killing form, but we verify it directly. The adjoint representation satisfies
\begin{align*}
\operatorname{ad}_{\mathfrak g}([r,x])
=
\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(x)
-
\operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(r).
\end{align*}
Substituting this into the definition of $\kappa_{\mathfrak g}$ gives
\begin{align*}
\kappa_{\mathfrak g}([r,x],y)
&=
\operatorname{tr}\bigl((\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(x)
-
\operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(r))
\circ \operatorname{ad}_{\mathfrak g}(y)\bigr) \\
&=
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(y))
-
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(y)).
\end{align*}
The trace is cyclic on endomorphisms of a finite-dimensional vector space, so
\begin{align*}
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(y))
=
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}(y)\circ \operatorname{ad}_{\mathfrak g}(x)).
\end{align*}
Therefore
\begin{align*}
\kappa_{\mathfrak g}([r,x],y)
&=
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(r)\circ
(\operatorname{ad}_{\mathfrak g}(x)\circ \operatorname{ad}_{\mathfrak g}(y)
-
\operatorname{ad}_{\mathfrak g}(y)\circ \operatorname{ad}_{\mathfrak g}(x))) \\
&=
\operatorname{tr}(\operatorname{ad}_{\mathfrak g}(r)\circ \operatorname{ad}_{\mathfrak g}([x,y])) \\
&=
\kappa_{\mathfrak g}(r,[x,y]).
\end{align*}
Since the trace lemma already showed $\kappa_{\mathfrak g}([r,x],y)=0$, we conclude that
\begin{align*}
\kappa_{\mathfrak g}(r,[x,y])=0.
\end{align*}
[/guided]
[/step]
[step:Conclude orthogonality to the derived algebra]
The derived algebra $[\mathfrak g,\mathfrak g]$ is the $F$-linear span of all brackets $[x,y]$ with $x,y \in \mathfrak g$. We have proved that for every $r \in R$ and every $x,y \in \mathfrak g$,
\begin{align*}
\kappa_{\mathfrak g}(r,[x,y])=0.
\end{align*}
By bilinearity of $\kappa_{\mathfrak g}$, it follows that
\begin{align*}
\kappa_{\mathfrak g}(r,z)=0
\end{align*}
for every $z \in [\mathfrak g,\mathfrak g]$. Hence $r \in [\mathfrak g,\mathfrak g]^\perp$. Since $r \in R=\operatorname{rad}(\mathfrak g)$ was arbitrary,
\begin{align*}
\operatorname{rad}(\mathfrak g) \subseteq [\mathfrak g,\mathfrak g]^\perp.
\end{align*}
[/step]