I gave a simple geometric proof of Bocher's theorem (a generalization of the Gauss-Lucas theorem) in a paper in Computational Methods and Function Theory in 2015. You can find a pdf at my webpage linked here. The paper is the one titled

- "Level curve configurations and conformal equivalence of meromorphic functions"

It is a long paper (48 pages), but the proof of Bocher's theorem is entirely contained on page 6.

The idea is as follows. Suppose that a rational function $R(z)$ has all of its zeros contained in one disk $D_1$ on the Riemann sphere, and all of its poles on another disk $D_2$, and that $D_1\cap D_2=\emptyset$. Bocher's theorem says that there will be no critical point of $R$ outside of $D_1\cup D_2$. This immediately implies the Gauss--Lucas theorem.

**PROOF:** Suppose that there is a critical point $z_0$ of $R$ outside of $D_1\cup D_2$. We may as well assume that $z_0=0$, and that $D_1$ is contained in the half-plane $\{z:Re(z)<-1\}$ and that $D_2$ is contained in the half-plane $\{z:Re(z)>1\}$.

Define $\epsilon=|R(0)|$, and consider the level set $\mathcal{L}=\{z:|R(z)|=\epsilon\}$. Since $0$ is a critical point of $R$, $\mathcal{L}$ has a branching at $0$. In fact, if $0$ is a critical point of $R$ of multiplicity $k$, then $\mathcal{L}$ has a $(2k+2)$--fold branching at $0$. Thus there is some horizontal line segment $H_m=\{x+im:-1\leq x\leq1\}$ which intersects $\mathcal{L}$ in at least two points distinct, say $z_1$ and $z_2$, with $Re(z_1)<Re(z_2)$. However since $z_1$ is closer to every zero and further from every pole of $R$ than $z_2$, it must be that $|R(z_1)|<|R(z_2)|$, contradicting the assumption that $z_1$ and $z_2$ are in the same level set of $R$.