I used SPSS 19's 2SLS procedure (which is very straightforward, with almost no optional specifications) to predict Y from X after X was predicted based on I, an instrumental variable. Then I tried to match those results by running 2 separate OLS regressions. First I obtained the predicted X values by regressing X on I. Then I regressed Y on this "predicted X" variable. The results hardly matched those of the integrated 2SLS procedure. The b matched, but not RSQ or Beta (which was wildly different) or t. Why would this happen? I made sure to filter by the same subset of cases for each procedure.
The procedure you describe is only partially correct. It only gives you the correct parameter estimates, i.e. the slopes. That is what happened in your case.
However, the covariance matrix obtained by this approach is not correct. This is why your "betas" (standardized coefficients) and your t statistics diverge with respect to the correct two-stage approach.
The problem arises in the second stage where you regress $y$ on the predicted $x$. You implicitly assume that $x$ is known, but in reality it is estimated $x$. The two-stage least squares estimator takes this into account, whereas the manual procedure you have chosen does not do that.
For this reason, you are generally advised to avoid the procedure you have described and to use the correct two-stage least squares procedures.
2SLS speaking generally is a sequential OLS regression (I --> X'; X' --> Y'), but in contrast with sequential regression performed by hand it computes standard errors from initial X (predictor), not from X' (X as predicted by I, i.e. its direct image), because we are interested in the model X --> Y, not model I --> Y. Thus and so only b coincides between 2SLS and explicit sequential regression; beta, p-value, R-square - they are different.