The 27-year-old off-break bowler has made five Test appearances for South Africa and is available to play in all formats for newly-promoted Essex.
Harmer has taken 290 first-class career wickets at an average of 32.57, as well as scoring 2,476 first-class runs.
"Simon is an exciting cricketer who has played at the top level of the game," said head coach Chris Silverwood.
Pretoria-born Harmer said he had always wanted to play in England.
"Playing county cricket has always been a boyhood dream of mine and to have the opportunity to fulfil that dream at Essex is very surreal," he added.
"I am really looking forward to adding as much value as I possibly can to the team and making sure our time in the County Championship Division One is a long one."
Essex have signed South Africa all-rounder Simon Harmer on a Kolpak deal for the 2017 season.