diff --git a/pydantic/main.py b/pydantic/main.py
--- a/pydantic/main.py
+++ b/pydantic/main.py
@@ -4,7 +4,7 @@
 from enum import Enum
 from functools import partial
 from pathlib import Path
-from types import FunctionType
+from types import FunctionType, prepare_class, resolve_bases
 from typing import (
     TYPE_CHECKING,
     AbstractSet,
@@ -996,8 +996,12 @@ def create_model(
     namespace.update(fields)
     if __config__:
         namespace['Config'] = inherit_config(__config__, BaseConfig)
-
-    return type(__model_name, __base__, namespace, **__cls_kwargs__)
+    resolved_bases = resolve_bases(__base__)
+    meta, ns, kwds = prepare_class(__model_name, resolved_bases, kwds=__cls_kwargs__)
+    if resolved_bases is not __base__:
+        ns['__orig_bases__'] = __base__
+    namespace.update(ns)
+    return meta(__model_name, resolved_bases, namespace, **kwds)
 
 
 _missing = object()

diff --git a/tests/test_create_model.py b/tests/test_create_model.py
--- a/tests/test_create_model.py
+++ b/tests/test_create_model.py
@@ -1,6 +1,9 @@
+from typing import Generic, TypeVar
+
 import pytest
 
 from pydantic import BaseModel, Extra, Field, ValidationError, create_model, errors, validator
+from pydantic.generics import GenericModel
 
 
 def test_create_model():
@@ -205,3 +208,17 @@ class Config:
 
     m2 = create_model('M2', __config__=Config, a=(str, Field(...)))
     assert m2.schema()['properties'] == {'a': {'title': 'A', 'description': 'descr', 'type': 'string'}}
+
+
+def test_generics_model():
+    T = TypeVar('T')
+
+    class TestGenericModel(GenericModel):
+        pass
+
+    AAModel = create_model(
+        'AAModel', __base__=(TestGenericModel, Generic[T]), __cls_kwargs__={'orm_mode': True}, aa=(int, Field(0))
+    )
+    result = AAModel[int](aa=1)
+    assert result.aa == 1
+    assert result.__config__.orm_mode is True

create_model not support generics model
### Checks

* [x] I added a descriptive title to this issue
* [x] I have searched (google, github) for similar issues and couldn't find anything
* [x] I have read and followed [the docs](https://pydantic-docs.helpmanual.io/) and still think this is a bug

# Bug

```
from typing import Generic, TypeVar

from pydantic import Field, create_model
from pydantic.generics import GenericModel

T = TypeVar("T")


class TestGenericModel(GenericModel):
    pass


AAModel = create_model("AAModel", __base__=(TestGenericModel, Generic[T]), aa=(int, Field(0)))

AAModel[int](aa=1)
```

output
```py
Traceback (most recent call last):
  File "test.py", line 13, in <module>
    AAModel = create_model("AAModel", __base__=(TestGenericModel, Generic[T]), aa=(int, Field(0)))
  File "pydantic/main.py", line 972, in pydantic.main.create_model
TypeError: type() doesn't support MRO entry resolution; use types.new_class()
```


tests/test_create_model.py::test_generics_model
tests/test_create_model.py::test_create_model tests/test_create_model.py::test_create_model_usage tests/test_create_model.py::test_create_model_pickle tests/test_create_model.py::test_invalid_name tests/test_create_model.py::test_field_wrong_tuple tests/test_create_model.py::test_config_and_base tests/test_create_model.py::test_inheritance tests/test_create_model.py::test_custom_config tests/test_create_model.py::test_custom_config_inherits tests/test_create_model.py::test_custom_config_extras tests/test_create_model.py::test_inheritance_validators tests/test_create_model.py::test_inheritance_validators_always tests/test_create_model.py::test_inheritance_validators_all tests/test_create_model.py::test_funky_name tests/test_create_model.py::test_repeat_base_usage tests/test_create_model.py::test_dynamic_and_static tests/test_create_model.py::test_config_field_info_create_model