You have to understand how spi works.
When the master sends some data, the same clock clocks in data from the slave.
I am not sure what your slave is doing, but as an example let's say the slave will receive a byte and respond to the master by sending the same byte it just received.
First, when sending Byte1 the master will be clocking in a byte from the slave, at this point the slave will not have received a byte from the master, so the byte clocked in could be random, 0x00 or 0xFF depending on how the slave is programmed. This byte would be stored in the fifo/receive register. When you execute the spi read it just returns the byte in the fifo/receive register, it does not do another transaction. So you read this byte and discard it. You can at this point send Byte2, during this transaction the slave would be responding with Byte1, you can then execute spi read and it would return Byte1 from the fifo. You can keep this going and you would always be receiving the previous byte. To get the last byte you need to send an extra byte to receive it.
Another example, reading 8 bytes from SPI Flash.
Lets say the read command is 4 bytes (1 byte command + 3 byte start address), for this usually you have to assert the CS and keep it asserted during the whole transaction, then de-assert to finish, but let's concentrate in send/receive.
When sending the 4-byte command, you would be receiving and discarding 4 bytes. Then to actually read the 8 bytes from Flash you need to send 8 bytes to clock in the 8 bytes from the slave. So you send 8-bytes (usually 0x00 or 0xFF depending on what is the "nop" command for the flash) and this allows you to read the data from the slave.
I hope this helps.