Indonesia launched a counterattack in the sixth extra minute.
Muhammad Taufany (number 15) started the attack after taking the ball from Vietnamese midfielder Nguyen Ngoc Thang.
The Vietnamese side was stunned in disappointment.
Vietnam were playing with more men from the 60th minute after an Indonesian player was sent off with a second yellow card, but they were only able to equalize before conceding the last-minute goal.
Huynh Cong Den and Nguyen Ngoc Thang weep on the pitch. They were among six players who rushed to defend Vietnam against Indonesia' final attack. Their efforts were to no avail.
Midfielder Nguyen Thai Son kneels on the field. He and his teammates played well, but they could not defeat a hyper-efficient Indonesia squad.
Goalkeeper Quan Van Chuan (L) tries to boost the morale of his teammates, pulling them up from the ground.
There was not enough time for Vietnam to find another equalizer, and they had to watch Indonesia players celebrate again as the referee blew the final whistle two minutes later.
The final score was 2-3.
The 2-3 defeat ended Vietnam's dream of winning the SEA Games gold for the third straight season. They will play for the bronze medal next Tuesday, against either Thailand or Myanmar.
SEA Games 32 semifinal: Vietnam 2-3 Indonesia