Dozens of Greenpeace activists blocked a Shell oil refinery in the Dutch port of Rotterdam with boats on Monday in protest against fossil fuel advertising.
Campaigners from the environmental group used a sailing ship, kayaks and rubber dinghies to obstruct the entrance to the refinery, AFP journalists said.
Dutch police later arrested 22 activists and removed a group of protesters who had climbed onto an oil tank and unfurled slogans.
Greenpeace and 20 other groups have launched a petition calling on the EU to ban advertising and sponsorship by fossil fuel companies.
"The action is to shine a light on the need to ban fossil fuel ads and sponsorship," Silvia Pastorelli, one of the lead organisers of the protest, told AFP.
"We do it against Shell because they are one of the worst Greenwashers."
The protest began when Greenpeace's yacht, Beluga II, dropped anchor in front of the entrance to several refineries including one belonging to the Anglo-Dutch oil giant.
Campaigners blocked the port with a barrier made from four floating cubes emblazoned with fossil fuel company adverts collected from around Europe.
"I grew up reading signs about how cigarettes kill you, but never saw similar warnings in petrol stations or fuel tanks," activist Chaja Merk said.
"It's frightening that my favourite sports and museums are sponsored by airlines and car companies."
Greenpeace International chief Jennifer Morgan pointed out that the COP26 climate summit in Glasgow, Scotland was less than a month away.
But "Europe is buzzing with how to increase fossil gas production that would lock us into more emissions, when we need to break this dependence," she said.
A Dutch police spokeswoman said they had acted against the protest because "shipping traffic was blocked. That is really out of the question."
They arrested 22 people and fined 32 others.
Shell criticised the protest, saying that the demonstrators were "illegally on our property", according to the Dutch ANP news agency.