The agreement, which includes the South African Transport and Allied Workers' Union (Satawu) was announced by the Road Freight Employers' Association on Friday after wage talks resumed on Thursday evening.
The strike has been marked by violence which left several truck drivers injured and one dead, and a number of trucks damaged or destroyed.
Satawu general secretary Zenzo Mahlangu said his union was wrongly blamed for the violence.
"There were three other unions on strike as well but we hear Satawu being blamed for the violence. Employers know we never burnt a single truck."
Earlier this week, three trade unions, jointly claiming to represent 15 000 workers, agreed to adjust their pay demand in an attempt to end a three week-long strike. But Satawu, which represents about 28 000 workers in the strike, was not included in that agreement.
Wage talks resumed on Thursday evening, resulting in the new agreement involving all unions.
The deal was staggered over three years and had a 10% wage increase in the first year, 8% in the second and 9% in the third.
The first wage increase would be implemented on March 1 2013.
The Federation of Unions of South Africa (Fedusa) said it was elated that the end of the strike was in sight.
"While we are mindful of the cost to the economy and the lives lost in this strike, we are convinced that the sector will now rebuild itself to the advantage of the greater South African economy," Fedusa general secretary Dennis George said.
He would appeal to the labour minister to extend the agreement to non-parties in the road freight and logistics sector, to strengthen collective bargaining.
Cost runs into millions
The strike saw workers lose a total of R271-million in wages.
"Workers lost R271-million in wages while employers suffered a R1.2-billion loss a week," Road Freight Employers' Association chairperson Penwell Lunga told reporters in Johannesburg.
Lunga said employers had been operating at between 70% and 80% capacity as of Wednesday. – Sapa