I attended a conference once where the invited speaker, Raul Rojas, showed that the Z3 was a universal computer, which wasn't previously believed to be the case. The basic idea of the proof was to show that you could have a single while-loop on the Z3 containing a big case-statement in the body of the loop which basically simulates a (finite) Turing machine.
The interesting part of this talk however was this: the Z3 did support neither loops nor conditional branches per se! Instead, it could just compute a series of mathematical operations encoded on a punched tape.
To simulate the case statement without the conditional branching, the trick you do is you execute every branch of the case-statement each time, but you only allow one of the branches to write the results of its computation back to the machine's memory.
But how do you get a while-loop? Well, you just glue the ends of the punch tape together! ;-)
(More details here: http://www.zib.de/zuse/Inhalt/Kommentare/Html/0684/universal...)