Two of the victims were police officers, officials say.
The incident took place in Quinta do Conde, 18 miles south of the capital Lisbon.
A 77-year-old man is said to have opened fire after a row over a barking dog.
The man reportedly tried to take his own life with a hunting rifle and was arrested and taken to hospital.
A plainclothes officer who lived in the area was shot dead as he ran to investigate the row, and a patrol officer then called to the scene was shot in the head and killed.
The third victim was reportedly the son of the plainclothes officer who was trying to help his father.
The son was seriously injured in crossfire and died of his wounds in hospital.
One neighbor told the Lusa news agency the gunman had threatened to kill a neighbor if the dog did not stop barking “but it never crossed our mind he would try to do it”.
The US House Ethics Committee has voted to release its report on former Republican Representative…
ABC News has agreed to pay $15 million to President-elect Donald Trump to settle a…
South Korea’s parliament has voted to impeach President Yoon Suk Yeol over his failed attempt…
Israeli war planes have carried out more than 100 air strikes in Syria on December…
President-elect Donald Trump has threatened to impose 100% tariffs on the BRICS countries if they…
Syrian troops have withdrawn from the city of Aleppo following an offensive by rebels opposed…