You can use webRequest with event pages, but it's not straightforward:
- declare "webRequest" inside "optional_permissions" in manifest.json, not inside "permissions"
- if chrome.webRequest is undefined show a button in your extension's UI to grant webRequest permission with an explanation why it's needed
- in the button's "click" listener use chrome.permissions.request (docs) to obtain "webRequest" permission
- from this moment on your extension can use chrome.webRequest forever
The only problem left is that event pages won't resume for webRequest listeners so you need to prevent the event page from unloading for the duration of using webRequest. This is almost trivial: open a messaging port from an iframe to the background page listener, and once you're done with using webRequest, remove the iframe so the port will close and the event page will be able to unload. Example and more info:
https://stackoverflow.com/a/58577052
In case your extension doesn't have a UI, you may be lucky if your extension's functionality can be activated via chrome.contextMenus.onClicked or chrome.browserAction.onClicked or chrome.pageAction.onClicked or chrome.commands.onCommand because you can call chrome.permissions.request in such a listener. Otherwise, well duh... you'll have to add a UI just to obtain the permission.