Jad A., this is a very common issue that every Marketing Ops person has to deal with at some point. My solution was to create a custom date stamp property for every stage e.g. Became MQL, Became SQL, Became Opportunity etc. Since you can edit custom properties, but can't edit system date-stamps, you can create workflows (or manually update) to populate these date-stamp fields.
In cases when stages progress in the right order you can simply map system date-stamps too these custom date-stamps.
if stages are skipped (e.g MQL goes directly to Opportunity, skipping SQL), you can copy Became Opportunity date to Became SQL etc.
Ultimately, your custom "Became <stage>" date-stamp properrties become the foundation for your funnel reporting.