Sanha and Yala had won the biggest share of the vote in the first round of elections on June 28, with Sanha securing 39.59 per cent, a 10-point advantage over Yala.
The runoff round was originally to have been held on August 2 but was brought forward to encourage a higher turnout as the later date could have interfered with harvest work in the predominantly rural country.
The vote was triggered by the killing of Joao Bernardo Vieira, Guinea-Bissau's long-time president, by soldiers on March 2, in an apparent revenge attack following the assassination of army chief General Batista Tagme Na Waie in a bomb attack.
In June, the army killed two senior political figures in what they claimed was an operation to foil a coup plot.
The murder of Vieira, who ruled Guinea-Bissau for much of the past 25 years, came about a decade after the military ousted him during a previous term as president.
Yala and Sanha have already faced each other in a second-round runoff for Guinea-Bissau's presidency in 2000, when Yala emerged victorious.
Sanha, 62, the candidate for the ruling African Party for the Independence of Guinea and Cape Verde (PAIGC), served as interim president from June 1999 to May 2000.
Yala, 56, who ran as head of the Social Renewal party, was forced out by the army in 2003.
Both rounds of the election have been financed entirely by the international community at a cost of 5.1 m euros ($7.2 m).
The national electoral commission (CNE) said about 150 international observers were on the ground for Sunday's vote and nearly 4,900 soldiers, police and paramilitary deployed to ensure security.