"If not is the easiest way to create a physical table and then transfer the data into a temp table?"
We try not to do that on production database because it pollutes the table "name space", and tends to extend the logs in an erratic fashion!
When we do have a need to do this we try to create them in a separate database, so the "pollution" is not in the Production database, and we always name them TEMP_xxx_YYMMDD so that the housekeeping of them becomes pretty obvious after-the-fact.
So inserting into a #table would be preferable (or even a @TableVar one) if the data is only needed within the session, as Van pointed out.