Lord Geidt - the PM's adviser on ministerial interests - also said the health secretary had acted promptly to correct the record.
Although there had been no conflict of interest, he said there was a "danger" it could have looked like one.
The PM said Mr Hancock's good name had not been damaged by the incident.
And he would not be taking "any further action" in relation to the matter, he added.
At the same time, Lord Geidt cleared Boris Johnson of misconduct over the refurbishment of the Downing Street flat, although he said the PM had "acted unwisely" over funding arrangements.
Lord Geidt - who was appointed by Mr Johnson in April - investigated a potential conflict of interest over Mr Hancock's shares in Topwood Ltd, a company approved as a potential supplier for NHS trusts in England.
It was run by Mr Hancock's sister and brother-in-law.
In March this year, Mr Hancock declared he had acquired shares in the company, which was granted the approved supplier status in 2019.
The firm, which specialises in the secure storage, shredding and scanning of documents, also won £300,000 of business from NHS Wales this year.
Mr Hancock insisted he had acted "entirely properly", but Labour said it was an example of "cronyism at the heart of this government".
Lord Geidt's report found that Mr Hancock had properly declared a financial interest when he took a 20% stake in the company but had not declared the link with his sister prior to that, when the firm had been awarded a place on a list of NHS suppliers.
But Lord Geidt concluded that Mr Hancock's "earlier failure to declare the interest was as a result of his lack of knowledge and in no way deliberate, and therefore, in technical terms, a minor breach of the ministerial code".
He said Mr Hancock had "acted properly and honestly in promptly" declaring his financial interest.
In an exchange of letters with the prime minister, Mr Hancock said his goal "has always been to act properly and honestly in these matters".
He said he had taken the advice of his permanent secretary and had "always sought to act within the ministerial code".
He added that he had no involvement with the company in February 2019, and "did not know about the framework decision", so did not think he could "reasonably have been expected to declare it".
In a reply to Mr Hancock, the prime minister said he agreed the incident should in no way "impugn" Mr Hancock's good character and he would not be taking "any further action".
But Labour's shadow health secretary, Jonathan Ashworth, tweeted that "as usual, Matt Hancock dismissed and evaded questions when asked about this in the Commons".
He added: "There is a rotten culture set from (the) very top across this government."