While it depends on the problems, another good method applicable to many scenarios is learning from nature how nature has solved any problem.
Trying to map our problem to a problem in nature, finding parallels and differences and applying accordingly.
Our traditional approach to technical complexity is to "divide and conquer" - break the problem into small, low complex chunks and solve them and then put the pieces together. This works well for many problems.
There exists a class of problems that are "fractal-like" in complexity and you break the problem down, only to expose another hidden layer of complexity. Highly creative domains have this nature. That is why they are unpredictable.