The National Union of Metalworkers of South Africa (NUMSA) declared the strike after talks broke down on wages, with employers offering a seven percent increase. Inflation in South Africa was at 4.6 percent in May.
"There should be no going back in our fight for a living wage. It is not negotiable to earn a decent wage, it is a 'must deliver'," the union's secretary general Frans Baleni told thousands of workers in central Johannesburg.
Thousands of workers marched peacefully through the streets of Cape Town, Port Elizabeth and East London, according to the Sapa news agency.
NUMSA said about 117,000 workers in the engineering sector joined the strike.
Many South African contracts expire on June 30, the end of the fiscal year, making the mid-year winter months known as the "strike season".
Workers at oil depots and fuel refineries plan to go on strike from Tuesday, while salary talks for gold and coal miners are expected to resume later in the week.