Your assumption is somewhat faulty: It's OK to have lots of fields in a table. Mostly what you don't want to do is to duplicate data.
For example, I have a table called publicationAdTemplate with probably 40 or 50 fields. It has a single key field: publicationid
I can quickly find all the ad template records for a publication, and quickly digest them to create ads. Note that even though the record has fifty fields, most fields are a single Tinyinteger of length 1 or 2. So each record is total about 200 bytes.
What you really want to do is create appropriate relationships:
For example if your customers might have more than 1 address (bill to, ship to , warehouse, office, etc.) You'd do well to store those addresses individually in a separate table, referenced to the customer id.
One other element: If you have long text or blob type data, it can be better to store those elements in a separate table.
For example: You store whole books by chapter.
Rather than a table like 'BookChapter'
ID
Title
Author
Chapter
Text
You might to do well to have 2 tables:
BookChapterInfo
ID
Title
Author
Chapter
BookChapterText
BookChapterID
Text
etc.