In the 23rd minute, Sani Fauzi opened the scoreboard for Indonesia with a header, forcing Vietnam to strike back.
The first half ended with Vietnam trailing 0-1 against Indonesia.
At the start of the second half, the team in red made a substitution as striker Ha Duc Chinh replaced defender Ho Tan Tai to strengthen Vietnam's frontline.
Nguyen Quang Hai had a chance inside the box in the 50th minute. However, the team captain failed to make a good connection on the shot.
Vietnam levelled the score in the 64th minute as Nguyen Thanh Chung headed an equaliser in from a corner kicked by Do Hung Dung.
Three minutes were added to the second half. And when the match entered injury time, Nguyen Hoang Duc gave Vietnam a dramatic lead with a strike from distance, also settling a late win for Vietnam.
With this victory, Vietnam maintain their winning streak at the group stage, with nine points after three matches.
The team began its SEA Games campaign with a 6-0 win over Brunei Darussalam before thrashing Laos 6-1 in the second match.
Meanwhile, Indonesia defeated defending champions Thailand 2-0 in their first game before overcoming Singapore in their second match by the same scoreline.
Vietnam will face Singapore on December 3 at 7 pm (Hanoi time).