Sorting: should be done in the repository for large result sets; may be done inside the controller for small collections (i.e. without paging).
Paging: IMO the repository should expose a way of returning collection slices (which is not exactly the same as paging). Meaning, there should be a way of asking the repository to return a query, starting at the index z and for the next y items. Then everything related to the particular page size (or page index) should be kept inside the controller. That way you can optimize data retrieval, but without coupling your model to a particular presentation requirement.