Why does my database using the simple recovery model have such a large transaction log?
Your first stop for problems like this should always be this query:

SELECT log_reuse_wait, log_reuse_wait_desc
FROM sys.databases 
WHERE [name] = 'YourDatabaseName';


From the sys.databases documentation:


  Reuse of transaction log space is currently waiting on one of the following as of the last checkpoint.


There's a list of possible values on that page, and a fair amount of additional detail for the different values here: The Transaction Log (SQL Server) - Factors that can delay log truncation

It's possible that, if your server is not very busy, that it had been a while since an automatic CHECKPOINT ran.  This is the process that writes data pages to disk after they have been modified in memory.  Operations in the transaction log can't be overwritten until they have been successfully flushed to the data file, so you end up with a log_reuse_wait of 1 = Checkpoint.

Since you're using the simple recovery model, this seems like one of the more likely culprits (since you ruled out long-running transactions).  Running a full database backup causes a CHECKPOINT to run, which is likely what caused the log file to finally clear for you after running the backup.  From Database Checkpoints (SQL Server), specifically about the "Internal" checkpoint type:


  Issued by various server operations such as backup and database-snapshot creation to guarantee that disk images match the current state of the log.