The fetch-execute cycle has two main parts - fetch and execute. In fetch, the CPU reads the instruction from memory by using the program counter to get the memory address, reading the instruction from that address, and incrementing the program counter. In execute, the CPU decodes the instruction to determine the required action, then performs that action such as data manipulation or input/output. This may involve moving data from memory to registers and using the ALU to perform operations before storing results back to registers.