The attackers first hijacked a car, then opened fire at a bus station before entering a police station in Gurdaspur district, officials said.
Five people, including two policemen, have been killed and at least six wounded.
Police believe that the attackers are from Indian-administered Kashmir.
Dinkar Gupta said that police were exchanging gunfire with the attackers who have occupied the police barracks.
Such assaults are common in disputed Kashmir, but attacks in neighbouring Punjab are extremely rare.
Security forces have been sent to the area as reinforcements. The dead include Punjab’s Superintendent of Police (Detective) Baljit Singh, Gurdaspur police chief Salwinder Singh told BBC Hindi.
The state-run All India Radio said four to five armed men had “fired upon a bus, injuring some passengers” at the bus station. Then they entered a police station.
Gurudaspur’s deputy police commissioner Abhinav Trikha told the AFP news agency that the attackers appeared to be holed up inside the residential quarters at the police station and were “firing continuously”.
“They were dressed in army uniforms and came in a Maruti Suzuki car,” he told reporters at the scene.
Bombs had been found on the railway tracks at the Dinanagar railway station, according to Indian media.
Indian media reports said the police station was close to the border with Pakistan and that the unidentified attackers came dressed in military uniform.
“There have been earlier reports of cross-border infiltration in Gurdaspur and Pakistani mischief in the area,” India’s junior minister for home affairs Jitendra Singh told reporters. Pakistan has not reacted to the incident.
ref:bbc