The premise of this question is false. A processor being "x-bit" does not mean all instructions are x bits long. It can mean that, particularly on RISC architectures, which x86 is not an example of. These days on x86, an instruction can anywhere from 1 byte to 15 bytes long (the upper limit used to be lower).
So x86 has no trouble with putting addresses (or other constants) in its instructions. Plenty of space. Note, by the way, that it never needs both a source and a destination address, that is simply not encodable. At least one of them has to be a register in most instructions, and in the couple of instructions that really do have two memory addresses, the addresses are implicit.
On some other architectures, you're absolutely right: the instruction can not be long enough to accommodate a full address (because they are the same size, and that would leave no opcode bits). A common solution is offering an addressing mode that is relative to the instruction pointer, and then you can store a full address "nearby" if you need an absolute address.