First, a trigger can give you the correct totals-- you just need to update all of your records once. For example, you could pull all the records out via Data Loader, then perform a basic update (just the ID value).
However, if you just need a report, you can do that in three easy steps.
- Build a Report
In the reports tab, choose Accounts and Contacts for the report type, and in the first filter criteria, use Account Id equals "" (no value). Save this report to a public place, and get your report Id from the URL.
- Build a Custom Link
In Account Custom Links, create a new link using the report's URL:
/00O000000XXXXXX?pv0={!Account.Id}
Where pv0 represents the first filter value, and {!Account.Id} is the account's Id that will be merged in.
- Add to Page Layout
Edit the Account Page Layout, add the custom link to the layout, and save.