Bott and Tu do this completely, in the de Rham theoretic setting of course. Here's an alternate proof I plan to use in singular theory next time I teach this material, which I find slightly more direct than using Thom classes (which require the tubular neighborhood theorem, etc): Definition: Given a collection $S = {W_i}$ of submanifolds of a manifold $X$, define the smooth chain complex transverse to $S$, denoted ${C^S}_*(X)$, by using the subgroups of the singular chain groups in which the basis chains $\Delta^n \to X$ are smooth and transverse to all of the $W_i$. Lemma: The inclusion ${C^S}_*(X) \to C_*(X)$ is a quasi-isomorophism, for any such collection $S$. Now "count of intersection with $W_i$" gives a perfectly well-defined element of ${\rm Hom}(C^S_*(X), A)$ and thus by this quasi-isomorphism a well-defined cochain on $X$ which is a cocycle if the $W_i$ are proper and have no boundary. It is immediate that this cocycle evaluates on cycles which are represented by closed submanifolds through intersection count. It is also not hard (but takes a bit to work out all the details) to show that the cup product of these cochains (when the submanifolds intersect transversally) is given by the intersection class of their intersection - we compute on the chains which intersect all of $W$, $V$ and $W \cap V$ transversally and reduce to linear settings. Consider for example $W$ the $x$-axis in the plane, $V$ with $y$-axis, and then various $2$-simplices can contain the origin (or not) and have various faces which intersect the axes (or not) all consistent with the formula for cup product.