I have a few ETL scripts I built using Talend Open Studio to move data over.
Using a tool like Talend (which is Free and has SFDC Connectors) or Informatica Cloud or Boomi, you can create scripts to pull data from your Production Org and populate in your Sandbox Org. Of course depending on your sandbox you'll hit size limits so you need to filter your data pulls. Not a big deal.
This approach also requires Enterprise Edition as you will need API access.
You can build your scripts to properly create the relationships.
Step 1 - Upsert Accounts (Store SFDC Production ID in an External Field, say "PROD_ID__c".
Step 2 - Upsert Contacts (Store SFDC Production ID in an Exteral Field, say "PROD_ID__C". Use ACCOUNTID on the Contact as the External ID in the script to automatically relate the Parent / Child Objects.
Step 3 - Continue Pattern.
Pros of ETL Approach:
Repeatable & Saves you TONS of time on Sandbox Refreshes.
Less error prone as your not manually running Data Loader / Reports.
Low Cost if you use Open Source or Jitterbit, etc.
You can automate this to keep data in sync as necessary via schedulable services (Apple Automater, Windwos Schedule Services, etc)
Requires some up front time & effort to build out the ETL scripts.
IF you modify the Fields in Production you need to update in Sandbox.
You need to know your Data Model. May sound stupid but if you have dependencies on multiple objects you need to build your script so that it loads the Object Records in an order that makes sense.