[proofplan]
We apply Cartan's Theorem A to the coherent ideal sheaf of holomorphic functions vanishing at $p$. Away from $p$, this sheaf is the full structure sheaf, so its stalk at $q$ is the local ring $\mathcal{O}_{X,q}$. Theorem A implies that germs at $q$ of global sections generate $\mathcal{O}_{X,q}$; since the germ of $1$ is not in the maximal ideal, at least one such global section has nonzero value at $q$. That section vanishes at $p$ by construction and therefore separates $p$ from $q$.
[/proofplan]
[step:Identify the coherent point ideal sheaf and its stalk at $q$]
Let $\mathcal{O}_X$ denote the sheaf of holomorphic $\mathbb{C}$-valued functions on $X$. Define the point ideal sheaf $\mathcal{I}_p \subset \mathcal{O}_X$ by assigning to each open set $V \subset X$ the ideal
\begin{align*}
\mathcal{I}_p(V)
:=
\begin{cases}
\{h \in \mathcal{O}_X(V) : h(p)=0\}, & p \in V,\\
\mathcal{O}_X(V), & p \notin V.
\end{cases}
\end{align*}
Let $n := \dim_{\mathbb{C}} X$. Choose a holomorphic coordinate chart $\varphi: U \to W$ from an open neighbourhood $U \subset X$ of $p$ onto an open set $W \subset \mathbb{C}^n$ with $\varphi(p)=0$. If $\varphi_i: U \to \mathbb{C}$ denotes the $i$-th coordinate function of $\varphi$, then $\{p\} \cap U$ is the common zero set of $\varphi_1,\ldots,\varphi_n$, and away from $p$ the set $\{p\}$ is empty locally. Hence $\{p\}$ is a closed complex analytic subset of $X$, so by the Coherence of Ideal Sheaves of Analytic Subsets the ideal sheaf $\mathcal{I}_p$ is coherent.
Since $p \neq q$ and $X$ is Hausdorff, there exists an open neighbourhood $V_q \subset X$ of $q$ such that $p \notin V_q$. For every open set $V \subset V_q$, the definition of $\mathcal{I}_p$ gives $\mathcal{I}_p(V)=\mathcal{O}_X(V)$. Taking stalks at $q$ therefore gives
\begin{align*}
(\mathcal{I}_p)_q = \mathcal{O}_{X,q}.
\end{align*}
[guided]
We first isolate the sheaf to which Cartan's Theorem A will be applied. Let $\mathcal{O}_X$ be the sheaf of holomorphic $\mathbb{C}$-valued functions on $X$. Define the point ideal sheaf $\mathcal{I}_p \subset \mathcal{O}_X$ by
\begin{align*}
\mathcal{I}_p(V)
:=
\begin{cases}
\{h \in \mathcal{O}_X(V) : h(p)=0\}, & p \in V,\\
\mathcal{O}_X(V), & p \notin V,
\end{cases}
\end{align*}
for every open set $V \subset X$. Thus a section of $\mathcal{I}_p$ is exactly a holomorphic function with the imposed condition of vanishing at $p$, and there is no condition on open sets not containing $p$.
We must verify that this is a coherent analytic sheaf, because Cartan's Theorem A applies to coherent sheaves on Stein manifolds. Let $n := \dim_{\mathbb{C}} X$. Choose a holomorphic coordinate chart $\varphi: U \to W$ from an open neighbourhood $U \subset X$ of $p$ onto an open set $W \subset \mathbb{C}^n$ with $\varphi(p)=0$. Write $\varphi_i: U \to \mathbb{C}$ for the $i$-th coordinate function of $\varphi$. Then inside $U$ the point $\{p\}$ is described by the equations
\begin{align*}
\varphi_1=0,\quad \ldots,\quad \varphi_n=0.
\end{align*}
At every point of $X \setminus \{p\}$, the subset $\{p\}$ is empty in a sufficiently small neighbourhood. Hence $\{p\}$ is a closed complex analytic subset of $X$. By the Coherence of Ideal Sheaves of Analytic Subsets, its ideal sheaf $\mathcal{I}_p$ is coherent.
Now we compute the stalk of $\mathcal{I}_p$ at the second point $q$. Since $p \neq q$ and $X$ is Hausdorff, there is an open neighbourhood $V_q \subset X$ of $q$ with $p \notin V_q$. On every open set $V \subset V_q$, the vanishing condition at $p$ is absent, so
\begin{align*}
\mathcal{I}_p(V)=\mathcal{O}_X(V).
\end{align*}
The stalk at $q$ is the direct limit over all neighbourhoods of $q$, and on the cofinal family of neighbourhoods contained in $V_q$ the two sheaves agree. Therefore
\begin{align*}
(\mathcal{I}_p)_q = \mathcal{O}_{X,q}.
\end{align*}
This equality is the key local observation: at $q$, the sheaf of functions vanishing at $p$ imposes no vanishing condition.
[/guided]
[/step]
[step:Apply Cartan's Theorem A to produce a global section nonvanishing at $q$]
Let $\Gamma(X,\mathcal{I}_p)$ denote the $\mathbb{C}$-vector space of global sections of $\mathcal{I}_p$. Since $X$ is Stein and $\mathcal{I}_p$ is coherent, Cartan's Theorem A says that the germs at $q$ of global sections of $\mathcal{I}_p$ generate the stalk $(\mathcal{I}_p)_q$ as an $\mathcal{O}_{X,q}$-module. Using $(\mathcal{I}_p)_q=\mathcal{O}_{X,q}$, there exist an integer $N \geq 1$, global sections $s_1,\ldots,s_N \in \Gamma(X,\mathcal{I}_p)$, and germs $a_1,\ldots,a_N \in \mathcal{O}_{X,q}$ such that
\begin{align*}
1_q = \sum_{j=1}^{N} a_j (s_j)_q
\end{align*}
in $\mathcal{O}_{X,q}$, where $1_q$ is the germ at $q$ of the constant holomorphic function $1: X \to \mathbb{C}$.
Define the maximal ideal
\begin{align*}
\mathfrak{m}_{X,q} := \{g_q \in \mathcal{O}_{X,q} : g_q(q)=0\}.
\end{align*}
If every germ $(s_j)_q$ belonged to $\mathfrak{m}_{X,q}$, then the ideal property of $\mathfrak{m}_{X,q}$ would imply
\begin{align*}
\sum_{j=1}^{N} a_j (s_j)_q \in \mathfrak{m}_{X,q}.
\end{align*}
But $1_q \notin \mathfrak{m}_{X,q}$ because $1_q(q)=1$. Hence there exists an index $j_0 \in \{1,\ldots,N\}$ such that
\begin{align*}
(s_{j_0})_q \notin \mathfrak{m}_{X,q}.
\end{align*}
Equivalently, $s_{j_0}(q) \neq 0$.
[guided]
We now use the Stein hypothesis. Let $\Gamma(X,\mathcal{I}_p)$ denote the $\mathbb{C}$-vector space of global sections of $\mathcal{I}_p$. Because $X$ is Stein and $\mathcal{I}_p$ is coherent, the hypotheses of Cartan's Theorem A are satisfied. The theorem says that, for every point of $X$, the stalk of a coherent sheaf is generated as a module over the local ring by germs of global sections. Applying this at the point $q$, the germs at $q$ of global sections of $\mathcal{I}_p$ generate $(\mathcal{I}_p)_q$ as an $\mathcal{O}_{X,q}$-module.
From the previous step,
\begin{align*}
(\mathcal{I}_p)_q = \mathcal{O}_{X,q}.
\end{align*}
Therefore the germ $1_q \in \mathcal{O}_{X,q}$ of the constant holomorphic function $1: X \to \mathbb{C}$ is a finite $\mathcal{O}_{X,q}$-linear combination of germs of global sections of $\mathcal{I}_p$. Thus there exist an integer $N \geq 1$, global sections $s_1,\ldots,s_N \in \Gamma(X,\mathcal{I}_p)$, and germs $a_1,\ldots,a_N \in \mathcal{O}_{X,q}$ such that
\begin{align*}
1_q = \sum_{j=1}^{N} a_j (s_j)_q.
\end{align*}
The next point is to extract a single section whose value at $q$ is nonzero. Define the maximal ideal of the local ring $\mathcal{O}_{X,q}$ by
\begin{align*}
\mathfrak{m}_{X,q} := \{g_q \in \mathcal{O}_{X,q} : g_q(q)=0\}.
\end{align*}
This ideal consists exactly of germs of holomorphic functions that vanish at $q$. Suppose, for contradiction, that every $(s_j)_q$ lies in $\mathfrak{m}_{X,q}$. Since $\mathfrak{m}_{X,q}$ is an ideal of $\mathcal{O}_{X,q}$, each product $a_j(s_j)_q$ also lies in $\mathfrak{m}_{X,q}$, and the finite sum lies in $\mathfrak{m}_{X,q}$:
\begin{align*}
\sum_{j=1}^{N} a_j (s_j)_q \in \mathfrak{m}_{X,q}.
\end{align*}
The displayed representation of $1_q$ would then imply $1_q \in \mathfrak{m}_{X,q}$. This is impossible because the germ $1_q$ has value $1$ at $q$, not $0$. Hence at least one index $j_0 \in \{1,\ldots,N\}$ satisfies
\begin{align*}
(s_{j_0})_q \notin \mathfrak{m}_{X,q}.
\end{align*}
By the definition of $\mathfrak{m}_{X,q}$, this is exactly the statement that $s_{j_0}(q) \neq 0$.
[/guided]
[/step]
[step:Read the chosen section as a holomorphic function separating $p$ and $q$]
The inclusion $\mathcal{I}_p \subset \mathcal{O}_X$ sends the global section $s_{j_0}$ to a holomorphic function
\begin{align*}
f: X &\to \mathbb{C}\\
x &\mapsto s_{j_0}(x).
\end{align*}
Thus $f \in \mathcal{O}(X)$. Since $s_{j_0} \in \Gamma(X,\mathcal{I}_p)=\mathcal{I}_p(X)$ and $p \in X$, the definition of $\mathcal{I}_p$ gives
\begin{align*}
f(p)=0.
\end{align*}
The previous step gives
\begin{align*}
f(q)=s_{j_0}(q)\neq 0.
\end{align*}
Therefore $f(p) \neq f(q)$, proving that holomorphic functions on the Stein manifold $X$ separate the distinct points $p$ and $q$.
[/step]