A businessman by profession, he owned James Morgan & Sons, a transport contractors' business. He was president of the Irish Temperance Alliance and chairman of Oldpark YMCA. He was elected to the House of Commons of Northern Ireland from the Belfast Oldpark seat in 1949, and represented the constituency until his defeat by Labour in 1958. He was then elected for Belfast Clifton in a 1959 by-election, and served that constituency until being defeated in 1969.
He served as Assistant Parliamentary Secretary to the Ministry of Finance and Assistant Whip from 1958 to 1961. This included five months while not holding a seat in Parliament, something which was permitted for a maximum of six months under the Government of Ireland Act 1920. He entered the Cabinet and Privy Council of Northern Ireland in 1961 as Minister of Health and Local Government and was appointed as Minister of Labour and National Insurance in 1964, and then Minister of Health and Social Services from 1965 to 1969, when he resigned. He was prevented by court order from referring to himself as the official Unionist candidate at the 1969 general election because of a violation of the rules at his selection meeting. He lost that election to the pro-O'Neill and "unofficial" Unionist candidate, Lloyd Hall-Thompson. He served as a member of the Senate from 1969 until he resigned in 1970.
He contested South Antrim in the by-election of 1970, and was a member of the Northern Ireland Assembly for Belfast North from 1973 to 1974 as a "pledged" Ulster Unionist (i.e. pro-Sunningdale), and then a member of the Northern Ireland Constitutional Convention – this time as part of the United Ulster Unionist Coalition, having parted company with Brian Faulkner and the pro-Sunningdale Unionists over the Council of Ireland in May 1974 – from 1975 to 1976. He died on 12 May 1999.