I know that Namecheap gives customers the ability to redirect a domain name to another URL in the DNS settings, and I think it is a 301 redirect but am not sure. As far as I know, there is no way to do that using DNS alone. In the Namecheap example, I believe they have a server doing the redirecting. So you can do a redirect, and possibly a 301 redirect, at Namecheap and possibly other domain registrars without buying hosting. However, if you already have a hosting account, you can easily do that in htaccess.
As long as the webhost gives you the ability to add DNS-entries with your domain-account, you don't need a webhost. However, if you're gonna do a lot of redirects, this is gonna be really tiresome unless you can upload a file with all the redirects already there - if you're gonna add multiple redirects via the forms in the control panel for your domain, that's gonna take a lot of time.
Anybody can use NameCheap's FreeDNS service. You don't have to be a customer. Just register and use their nameservers.
You don't need a Hosting plan to use 301 redirect as long as you have the authority to make change in DNS .
Many domain registrars offer redirect option with domain registration, maybe you can look up for that.
Some domain registrars offer the service called free forwarding service where you can set the redirect without the paid hosting. Ask your domain registrar for this feature for your domain.