A brawl broke out injuring at least 10 people, including the Social Democrat leader Zoran Zaev, who was left with blood pouring down his face.
The protesters, supporters of ex-Prime Minister Nikola Gruevski’s VMRO party, are demanding new elections.
Politics in the former Yugoslav republic has been deadlocked since an inconclusive election in December.
But the crisis goes back further, to a phone-tapping scandal two years ago.
Mr Zaev has created a coalition with ethnic Albanian parties, but his attempts to form a government have been blocked by the president.
Macedonian nationalists have been protesting on the streets since Mr Zaev tried to form the coalition.
Image copyrightEPAImage caption
Ethnic Albanians make up around a quarter of the country’s population.
The people who stormed parliament were angered by the coalition’s decision to elect Talat Xhaferi as speaker.
They fear moves to improve the status of Albanians threaten Macedonian unity.
Some of the 200 protesters were masked. Witnesses saw broken glass on the floor and traces of blood in hallways.
Police fired stun grenades to disperse protesters and allow politicians to exit the parliament building.
Image copyrightAFP / GETTY IMAGESImage caption
A statement from the US Embassy in Macedonia, published on Twitter, said: “We condemn the violence in the strongest possible terms.
“It is not consistent with democracy and is not an acceptable way to resolve differences.”
The secretary general of Nato, Jens Stoltenberg, tweeted that he was “shocked” by the “attacks”.
“All parties should respect democratic process and engage in dialogue, not violence,” he wrote.
“Violence has NO place in Parliament. Democracy must run its course,” tweeted European Union Commissioner Johannes Hahn.
Skopje has also seen regular protests against the coalition by demonstrators who believe it will damage the country’s national unity.
Macedonia came close to civil war in 2001 after an Albanian uprising.