Ember.js is a JavaScript MVC framework for building single-page web applications. It uses conventions over configurations and includes features like two-way data binding, routing and templates using Handlebars. Key concepts in Ember include models, routes, controllers and templates which work together in a defined workflow. Templates are used to display dynamic data from models and controllers handle updating the view. Routing in Ember maps URLs to routes and controllers. Ember Data provides a standard way to handle data persistence and normalization of models.