Source eNodeB sends "Handover Required" message to source MME. This message contains very important and mandatory IE i.e. "TargetID". Target Id mainly contains target (cell Id, eNodeB Id and tracking area identity).
When source MME receives this handover required message, first it verifies that whether it serves intended tracking area or not and target eNodeB has S1-link with it or not. If both cases are satisfied, I mean to say tracking area is served by source MME and also target eNodeB has S1-link with it then there is no change in MME, source MME shall continue to serve this UE. SGW selection is also done by MME since in this case there is no change in MME so that SGW is selected by this MME only. SGW selection function in MME makes sure that selected SGW should serve all the tracking areas in which UE can roam without changing current MME.
Now we take another case in which target tracking area is not served by this MME. In this case, a new MME would have been selected based on the target tracking area. If new SGW is selected then target MME executes create session procedure towards newly selected SGW and then prepare resource at target eNodeB. Once resources are reserved at target cell, target MME responds with Forward Relocation Response to source MME and also inform to source MME with indication flag that either SGW is changed or not. If flag indicates that SGW is changed then source MME shall trigger Delete Session Procedure otherwise it initiates Modify Bearer Procedure towards old SGW after execution of successful handover procedure.
This is my understanding and knowledge about handover procedure. Please correct me if I stated something wrong.