As a young boy he fought in the Battle of York in 1813 during the War of 1812. In 1826 he became a lawyer and moved to Hamilton, Ontario, where he represented the city in the legislative assembly of Upper Canada. As a member of the legislature he opposed the reform movement in Upper Canada led by William Lyon Mackenzie. When Mackenzie led the Upper Canada Rebellion in 1837, MacNab part of the British militia that moved against Mackenzie at Montgomery's Tavern in Toronto on December 7, dispersing Mackenzie's rebels in less than an hour.
MacNab then led a militia of his own against the rebels marching towards Toronto from London, led by Charles Duncombe. Duncombe's men also dispersed when they learned MacNab was waiting for them. In 1838 he was knighted for his efforts. He served in the legislature of the Province of Canada, leading the province as from 1854 to 1856. His mansion in Hamilton, Dundurn Castle, is now a tourist attraction in the city.