A framework is something like a set of libraries that are meant to be able to work together. It's meant so you don't need to go around implementing common algorithms, and data structures. You use those libraries (the framework) to arrange them in a way so the functionality they provide helps you solve a problem.
An engine is a system, you feed it with data and it does it's job.
It's worth noting that a library can have an "engine" and an engine can be built using a framework.