Help using less pins controlling 8ch relay
Your 74HC595 is probably your best bet.  You use 3 pins to control it - a data pin (DS), a clock pin (SHCP), and a latch transfer pin (STCP).

Using the Arduino's shiftOut() function you shift data into the 74HC595 chip, then you toggle the STCP pin to transfer the shifted byte onto the output pins.