India, seeking their first Asian Games title since 1998, played a spirited game to outlast hosts South Korea 1-0, with Akashdeep Singh scoring the winner in the 44th minute from a narrow angle.
Defending champions Pakistan were held to a 0-0 draw by 2010 finalists Malaysia before winning a thrilling penalty shoot-out 6-5. (Asian Games controversy: Korean Robs Sarita Devi of Win in Boxing Semis)
It needed eight attempts from each side to break the deadlock, with Rashid Mehmood beating Malaysian goalkeeper Kumar Subramaniam for the winner after Tengku Abdul Jalil's shot had been saved by Pakistan's Imran Butt.
The final will be played on Thursday with the winner securing a direct entry to the Rio de Janeiro Olympics in 2016.
The Pakistanis, who had failed to qualify for this year's World Cup, were in tears after the match as they hugged coach Shahnaz Sheikh and other team members on the bench.
"God is great," said Sheikh. "This was an important win for us, although I thought the boys were under some pressure during the whole game.
"It should be a very good final against India. We will be ready for them."
Malaysian coach Arul Selvaraj, who was appointed a few months before the Games, praised his team for giving Pakistan a tough fight.
"It is always heartbreaking to lose a game like this, but I am proud of my team," he said. "I could not have asked for more."
The Koreans, the highest ranked Asian team at number eight, had a chance to draw level against India when they earned their only penalty corner of the match two minutes from time, but failed to score.
India's Australian coach Terry Walsh said he was delighted to see his team emerge from a high-pressure match unscathed.
"It was a tough and close match, and a high quality one too, considering the pressure situation," Walsh said. "We showed a lot of energy, there was definitely an improved showing from the team.
"Ours is a young team which is still in the process of learning. Going to the final is a very important experience for us."
South Korean coach Shin Seok-Kyo slammed the decision of officials to advance their match to 5pm instead of 7pm, saying that contributed to the defeat.
"Just yesterday we were told that we will be playing earlier than scheduled," Shin, a former international, said. "It affected the players because we were ready to play under lights.
"We usually play better under lights, so this change really upset me. I think India prepared better than us. We could not make the right moves. The loss is very disappointing."