Inversion of Control (IoC) is a software design principle where the control of object creation and lifecycle is inverted, delegating it to a framework or container. Instead of direct instantiation, components receive their dependencies, allowing for greater Modularity and flexibility. This fundamental shift underpins many modern software architectures, often facilitated by Dependency Injection.