The star sued Topshop's parent company Arcadia for $5 million (£3.3m) over the T-shirts, which featured a photo taken during a video shoot in 2011.
Her lawyers told the High Court in London the fashion chain duped fans and may have damaged her reputation.
They said the picture was "very similar" to images used on CD sleeves for one of her albums.
Judge Mr Justice Birss ruled that a "substantial number" of buyers were likely to have been deceived into buying the T-shirt because of a "false belief" it had been approved by the singer.
The BBC's Lizo Mzimba: "There might be another hearing about the level of damages"
He said it was damaging to her "goodwill" and represented a loss of control over Rihanna's reputation in the "fashion sphere".
Topshop's lawyers had claimed the 25-year-old was making an unjustifiable bid to establish a "free standing image right" over use of her picture in the UK.
The photograph used by Topshop had been taken during filming of a music video in Northern Ireland in 2011.
In a two-minute judgment, Mr Justice Birss said there was "no such thing as a general right by a famous person to control the reproduction of their image".
"The taking of the photograph is not suggested to have breached Rihanna's privacy," he continued.
"The mere sale by a trader of a T-shirt bearing an image of a famous person is not an act of passing off.
Lawyers said the image was similar to one used on her album
"However, I find that Topshop's sale of this T-shirt was an act of passing off."
Mr Justice Birss did not make an assessment of any liable damages in his ruling.
Topshop said it was "surprised, disappointed and perplexed" by the High Court decision.
"There was no intention to create an appearance of an endorsement or promotion," it said.
"We feel that the fact that Rihanna has shopped, worn and had a relationship with Topshop for several years appears to have been detrimental to our case."
Rihanna has her own fashion line at River Island. Her first collection for the fashion retailer went on sale in spring 2013.
get dat money!