Great,
Thank you, I was trying to do this with Cases[] but just ended up further confused. Your technique is perfect.
Sort[list2,OrderedQ[{Position[list1, #1[[1]]], Position[list1, #2[[1]]]}] &]