I think it is instructive to know that this fact follows from a more general result about vector fields in $\mathbb{R}^n$. Denote by $B_R^{(n)} = \{x \in \mathbb{R}^n \, | \, |x| \leq R\}$ the closed ball of radius $R$ and $S^{(n-1)} = \{x \in \mathbb{R}^n \, | \,\, |x| = 1\}$ the unit spehre. Let $V(x)$ be, let's say, a smooth vector field defined on $B^{(n)}_R$ for some $R>1$ and let for any $x \in S^{(n-1)}$ we have that $(x \cdot V(x)) > 0$.
Assume that $V(x) \neq 0$ for all $x \in B^{(n)}$, where $ B^{(n)} = B^{(n)}_1$, i.e. $B^{(n)}$ is the unit ball of radius $R=1$. Then define the map
$$F : B^{(n)} \to S^{(n)} \subset B^{(n)}$$
$$F(x) = - \, \frac{V(x)}{|V(x)|}$$ By Brower's fixed point theorem, there exists at least one point $$x^{*} \in B^{(n)} \cap F(B^{(n)}) = B^{(n)} \cap S^{(n-1)} = S^{(n-1)} $$ such that $F(x^*) = x^*$. Then $x^* = F(x^*) = - \, \frac{V(x^*)}{|V(x^*)|}$ which means $V(x^*) = - |V(x^*)| \, x^*$. But by assumption,
$$0 < (x^* \cdot V(x^*)) = \big((- |V(x^*)| x^*) \cdot x^*\big) = - |V(x^*)| \, (x^* \cdot x^*) = - |V(x^*)|\, |x^*|^2 < 0$$ which is a contradiciton. Therefore there must be at least one point $x_0 \in B^{(n)}$ such that $V(x_0) = 0$. Now, since $(x \cdot V (x)) > 0$ for all $x$ on $S^{(n-1)}$, there cannot be a point $x^*$ on $S^{(n-1)}$ such that $V(x^*)=0$ otherwise $0 < (x^* \cdot V (x^*)) = 0$.
In particular, when $n=3$ and $V(x) = \nabla f(x)$ there should be a point $p \in (S^2)^{\circ}$ such that $\nabla f(p) = 0$.