Newcastle United reached their first final in 24 years after beating Southampton 3-1 in their two-legged Carabao Cup semi-final.