I'd say do both. The canonical tag puts the burden on the search engine to "get it right" - and eventually that usually happens. Nevertheless, a 301 is you assuming responsibility for the correct address. Your server always corrects the URL, no matter what the search engine does (or any other site) and that is the best practice.
If /url/ is a real directory, you don't need to redirect it explicitly. mod_dir does it for you; that's its job. (Its other job is to rewrite /url/ to serve content from /url/index.htm or similar.)
Some spiders do seem to like asking for directories without that final / but since they get redirected I consider it their problem, not mine.
If /url/ is a pseudo-directory that will get rewritten to its "real" content, you do need to redirect. Generic rule: There should only be one way to reach any given page. Pages and URLs are not really the same thing, but treat them as if they are.
The advantage of the 301 redirect is that users can only ever see one version in their url bar. Because of that, when others choose to link to your site, they will get the canonical url much more of the time.
Differing inbound links to urls that serve the same content can be a real pain to manage.