Quantum error correction protects fragile quantum information by encoding it into a larger quantum system1,2. These extra degrees of freedom enable the detection and correction of errors, but also increase the control complexity of the encoded logical qubit. Fault-tolerant circuits contain the spread of errors while controlling the logical qubit, and are essential for realizing error suppression in practice3–6. Although fault-tolerant design works in principle, it has not previously been demonstrated in an error-corrected physical system with native noise characteristics. Here we experimentally demonstrate fault-tolerant circuits for the preparation, measurement, rotation and stabilizer measurement of a Bacon–Shor logical qubit using 13 trapped ion qubits. When we compare these fault-tolerant protocols to non-fault-tolerant protocols, we see significant reductions in the error rates of the logical primitives in the presence of noise. The result of fault-tolerant design is an average state preparation and measurement error of 0.6 per cent and a Clifford gate error of 0.3 per cent after offline error correction. In addition, we prepare magic states with fidelities that exceed the distillation threshold7, demonstrating all of the key single-qubit ingredients required for universal fault-tolerant control. These results demonstrate that fault-tolerant circuits enable highly accurate logical primitives in current quantum systems. With improved two-qubit gates and the use of intermediate measurements, a stabilized logical qubit can be achieved.