SCCM used to be called SMS, which was lovingly nicknamed Slow Moving Software. SMS was designed to be deployed at a large scale (10s of 1000s of clients) in a geographically distributed network. This design choice means that it is implemented as pull technology with randomized client pulling times.
When a new client is installed a number of things have to happen before it installs Software Updates: The client needs to discover the Management Point, pull Policy, run some Inventory tasks, download the Updates, install them if the advertisement deadline is elapsed and it is not in a Maintenance Window, wait for the reboot and so on. Things have to happen on the server as well, it needs to assign the newly discovered Resource Record into its various Collections (dynamic Collection membership) so it gets the SUP Deployment, run summarization on the state messages the client/s are sending back and so on.
If all this is happening in under two hours your SCCM implementation just fine! That's about as fast as Slow Moving Software is going to move. Relax, grab a cup of coffee and sit back!
If you want your freshly imaged machines to be immediately up-to-date, look at adding an Install Software Updates step into your Task Sequence or do offline updating of the .wim file periodically.
TL;DR; SCCM is fine. It just likes to take its time.