If it were me, here's how I'd approach it:
run the mix through a set of very small speakers.
while listening to those small speakers run a couple of layers of light compression on the master bus, listening to what the combination of the small speakers and the comps are doing to your bigger transients and louder moments. The objective is just to tighten the dynamic range in steps.
then put a compressor on the master bus that has a "mix" value - something like Waves H Comp, this allows you to effectively run a dual compression chain - one with no compression and one that is compressed. On this one squash the hell out of the compressed side and mix it in to taste. While mixing in the crushed stuff, you should be listening to the quieter parts of the mix, essentially bringing the floor of the mix up into a place that works well on the smaller speakers.
Now print the mix, put it on your phone and listen to it both through the speaker and on earbuds.
adjust and re-output.
Its easy to go nuts with compression in this situation, but if you tailor the compression in layers and monitor the right way you'll get a good feel for how much compression to add without destroying the mix.