This may be overkill, but to elaborate on Ryan's answer in another way:

Without mentioning either boundaries or any other compactifications, we can define the intersection number of $x\in H_p$ and $y\in H_q$ for homology classes in an oriented $(p+q)$-manifold. First turn them into compactly supported cohomology classes by duality, then cup these to get into $H_c^{p+q}\cong H_0$, etc.

In the smooth case (smooth manifold, and classes represented by smooth compact oriented submanifolds), after putting the submanifolds in general position you can get this same number by counting intersection points with signs.

When $x=y$ this is the same as counting the zeroes of a section of the normal bundle of the submanifold.

This in turn is the same as evaluating the Euler number of the normal bundle of the submanifold on the fundamental class of the submanifold.

Of course, in our examples the ambient manifold *is* the total space of the normal bundle, so what all of this amounts to is the statement:

The self-intersection number (as defined by algebraic topology) of the zero section of a smooth rank $n$ oriented vector bundle over an oriented $n$-manifold is the result of evaluating the Euler class of the submanifold on the fundamental class.

I don't see that any of this follows from what I call Poincare-Hopf. But, if you combine the last statement with the fact that in the special case of the tangent bundle evaluation of Euler class on the fundamental class gives Euler number, then you get Poincare-Hopf.