First things first, if you're facing to a long redesign you probably gonna need to prioritize some parts and features. Interview your users, define metrics to complete, run usability tests, identify pain points, goals and eventual solutions. This should always be the first step.
Group related information
Grouping questions will allow you to break your form into small steps, define easily discoverable section titles, split validation logic and provide user a small "rewards" feeling after each section completion.
As you mentioned it wizard would probably work but I would recommend to employ it when your user needs to go through an unfamiliar form, it seem it's not your case. Using user studies data to identify relative questions and prioritize theme ; you should be able to group relative fields into semantic sections or themes.
Show location & progress
Long forms often means long scroll and hard focusing. Giving your user a completion status and an overview of the whole form let them know what is expected from them. They can scroll to the different parts and back to the top with knowledge and forecast about the amount of remaining work.
When implemented properly a progress tracker can also help users save their progress in case of accidentally refresh of the page, connection lost, etc.
Use the above described group logic to identify steps in your form and let users know where they are. Display all sections of the form at all times and where the user is in completion process. Highlight the current section, use a different style for completed sections and number them.
Reduce cognitive load
Just like computers, human brains have a limited amount of processing
Nielsen / Norman group - Article Link
Since we're dealing with specific questions (and I guess business specific options), you should design every questions or inputs with the goal to reduce processing complexity and user requested actions.
Be clear about the purpose of the form and each question
Why user do to fill this form ? How long will it take ? Do they need to prepare something in advance ? What should they expect on submit ?
Autofocusing guides users to the starting point of your form. Emphasize the first field with an accent border color, background color or both. In that way you give a hint to a respondent where he should start and as a result, significantly boost the whole process.
When a field is completed and/or validated, you could focus to next one : be careful this practice can lead to user frustration on complex fields that could require editing.
Pre-fill and auto-detect as much as possible
Using already filled inputs, context, history etc. allow suggestions and/or completion and keep in mind to let user know WHY your form suggest some values
Eg: If I want to a product from a specific category page, the form should not ask me to define the category value
Use specific inputs and visual constraints
Use proper input type according to what your asking (number, email, text, etc) and add visual constraints to explicit expected length
Reduce visual clutter
Labels as placeholders (for empty fields)
The role of the placeholder is normally used to give hints on what type of information is required for that particular input field. But some designers are using it to replace the field label to reduce clutter and a more minimalistic look. The problem with this is that the placeholder would disappear once the user interacts with the input field. This might be annoying if the user forgets the purpose of the field and has to click outside of it to see the placeholder again.
Google Material Design overcomes this problem by implementing micro-interaction that converts the placeholder to a floating label.
Single column layout
Multiple columns disrupt a users vertical momentum.
By using a one-column design, the eyes move by natural direction from the top to the bottom, line after line. Multiple-column design create eye zigzagging behavior which increases completion time and the number of eye fixations. That is bad for you, as well as for users.
Prevent user errors
Show your requirements clearly and emphasis errors before submit
Tell users what is expected from them, Don’t wait until they completed the form and show them an error message. The user won’t know what is expected out of them if there’s no clear indication of the validation rules.
Validate fields as soon as possible (without blocking) and provide explicit error messages. Use inline validation with real-time feedback immediately after answering.
Handle possible network, system or browser issues
Long form means long processing time, which can lead users to involuntary leaving the page of your app.
Providing a save button, implementing a "draft mode" or automatically saving unsubmitted values can reduce frustration in case of disconnection. Think of it as an "auto-save" on your favorite design app.
To prevent this case for in-app navigation, you could also implement a dialog box asking user if they understand changes will be discarded.
The following two questions provide some helpful precisions on how to manage eventual problems making user leave the form by inadvertance.
Long form navigation UX
How to make long forms engaging?
How to tackle a form with 50+ fields?