It was the right call.
Because Freeman escaped from the pocket, the defender can shove the WR before the pass and there is no illegal contact. Once the WR is out of bounds, he can't touch the ball first, regardless if he reestablishes position.
Had Freeman thrown from the pocket, it would have been illegal contact by the Saints defender, so the catch would have been legal IF the TB WR reestablished himself (which he did). In that case, TB would have declined the penalty, TD.
Blame the rule, not the ref. Just another confusing, convoluted, overly complicated NFL rule.