Evolutionary mechanisms do account for the evolution of complexity,
since non-lethal mutations tend to add more components to simple
systems than they remove (Soyer and Bonhoeffer 2006).
The abstract of Lenski et al. (2003, 139) is worth quoting in full:

A long-standing challenge to evolutionary theory has been whether it
can explain the origin of complex organismal features. We examined
this issue using digital organisms -- computer programs that
self-replicate, mutate, compete and evolve. Populations of digital
organisms often evolved the ability to perform complex logic
functions requiring the coordinated execution of many genomic
instructions. Complex functions evolved by building on simpler
functions that had evolved earlier, provided that these were also
selectively favoured. However, no particular intermediate stage was
essential for evolving complex functions. The first genotypes able
to perform complex functions differed from their non-performing
parents by only one or two mutations, but differed from the ancestor
by many mutations that were also crucial to the new functions. In
some cases, mutations that were deleterious when they appeared
served as stepping-stones in the evolution of complex
features. These findings show how complex functions can originate by
random mutation and natural selection.