ASP.NET MVC is an architectural pattern that separates an application into three main components: the model, the view, and the controller. The MVC pattern decouples these components to allow for independent development and testing. ASP.NET MVC uses this pattern and introduces features like testability, loose coupling, separation of concerns, and clean URL structures. The core components include models for the data, controllers to handle requests and interface with models, and views for generating output. Requests are routed and then handled by the controller, which works with models and returns an action result to the view for output.