To start off with, you are better off leaving the model in the same project if the solution is a manageable size.
This will be the best way to avoid circular references. This is on the condition that the assembly you are creating won't be used by many other dependent projects and in that case, the projects could be seperated - it depends on the size and scale of your application.
e.g. For a small website application, I would structure the MVC solution in the following way - use the default folder for the Model. This will contain classes that represent the business domain objects and can be decorated with various attributes if required.
It is good to create another folder for the Data Access layer - I make a "Repository" folder for data access and this contains all calls to data sources, such as populating datasets through oledb connections, linq etc.
The controller calls the classes from the repository and populates the model objects with data. So in answer to your question, the controller creates an instance of the model and populates this model through data access layer methods.
An example is as follows:
controller code:
PurchaseOrder model = new PurchaseOrder();
string orderNumber = "123";
model.ListOfItems = purchaseOrderRepository.GetPurchaseOrderItems(orderNumber);