The attack occurred about 300 feet within the Indian side of the de facto border between the regions of Kashmir controlled by the two countries, the Press Trust of India reported.
Two other Indian soldiers were injured.
One of the dead soldiers was reportedly beheaded. The army confirmed the attack, but did not comment on the beheading report.
The attack was a "grave provocation" and represented a "significant escalation" in the recent cross-border fighting, the army's Northern Command said in a statement.
The Pakistani troops crossed in a forested area shrouded in thick fog and mist into the Mendhar sector of Poonch district when they were spotted by the patrol, the statement added.
The firefight lasted about 30 minutes before the Pakistani troops retreated back across the border, known as the "Line of Control."
A spokesman for the Pakistani military, Gen. Asim Bajaw, termed as a "baseless allegation" India's claim Pakistani troops had crossed the border, CNN reported.