IoC, or Inversion of Control, is a design pattern that inverts the traditional flow of control within an application. Rather than user code directly managing object creation and dependencies, a framework or container dictates the lifecycle, fostering modularity and loose coupling.