Two quick strikes by Rajneesh Salaria and Sanjay Toppo in the 18th and 23rd minutes respectively put Army in control.
ONGC pulled one back just before half-time when skipper Sumit converted a penalty stroke.
The two teams battled hard in the second half in quest for more goals but Army appeared to have sewed up the match in the 50th minute when Rajnath beat the ONGC goalkeeper.
Stung by the reverse and trailing 1-3, ONGC stepped up pressure and mounted a series of attacks on the Army citadel.
Sumit Kumar scored in the 61st minute to give some hope for ONGC.
The Army defence held firm in the face of sustained pressure from the ONGC forward line to pull off a victory, which has ensured a semi-final berth.
The Central Secretariat, which impressed in a draw in the opening match against ONGC, scored once in each half to put it across the Mumbai team.
Pawan Kumar scored in the 8th minute from a penalty corner and they held that lead till the very last minute when captain Hosali Shankar Patil slammed home from a penalty corner.
Meanwhile, the match between CHA and Bengaluru HA saw the local side bounce back from 0-2 down at half-time to secure a draw.
The Bengaluru team scored in the 14th and 35th minute through M Rajendra and M B Cariappa.
Chennai stepped up in the second half as Manoj and Veera Tamizhan scored to help eke out a point.
(This story has not been edited by Business Standard staff and is auto-generated from a syndicated feed.)